建造模式:將一個復(fù)雜對象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同表示状婶。
UML圖:
需求:
我們假設(shè)一個快餐店的商業(yè)案例意敛,其中,一個典型的套餐可以是一個漢堡(Burger)和一杯冷飲(Cold drink)膛虫。漢堡(Burger)可以是素食漢堡(Veg Burger)或雞肉漢堡(Chicken Burger)草姻,它們是包在紙盒中。冷飲(Cold drink)可以是可口可樂(coke)或百事可樂(pepsi)走敌,它們是裝在瓶子中碴倾。
我們將創(chuàng)建一個表示食物條目(比如漢堡和冷飲)的Item接口和實現(xiàn)Item接口的實體類,以及一個表示食物包裝的Packing接口和實現(xiàn)Packing接口的實體類掉丽,漢堡是包在紙盒中跌榔,冷飲是裝在瓶子中。
然后我們創(chuàng)建一個Meal類捶障,帶有Item的ArrayList和一個通過結(jié)合Item來創(chuàng)建不同類型的Meal對象的MealBuilder僧须。BuilderPatternDemo,我們的演示類使用MealBuilder來創(chuàng)建一個Meal项炼。
Item接口抽象:
Packing包裝接口(紙質(zhì)包裝担平,瓶裝):
Burger漢堡:
ChickenBurger雞肉漢堡:
VegBurger蔬菜漢堡:
Bottle瓶裝:
Wrapper紙質(zhì)包裝:
ColdDrink冷飲:
Coke可口可樂:
Pepsi百事可樂:
Meal:
MealBuilder:
BuilderPatternDemo:
構(gòu)造了一個雞肉百事可樂漢堡和一個蔬菜可口可樂漢堡。