建造模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同表示。
UML图:
需求:
我们假设一个快餐店的商业案例,其中,一个典型的套餐可以是一个汉堡(Burger)和一杯冷饮(Cold drink)。汉堡(Burger)可以是素食汉堡(Veg Burger)或鸡肉汉堡(Chicken Burger),它们是包在纸盒中。冷饮(Cold drink)可以是可口可乐(coke)或百事可乐(pepsi),它们是装在瓶子中。
我们将创建一个表示食物条目(比如汉堡和冷饮)的Item接口和实现Item接口的实体类,以及一个表示食物包装的Packing接口和实现Packing接口的实体类,汉堡是包在纸盒中,冷饮是装在瓶子中。
然后我们创建一个Meal类,带有Item的ArrayList和一个通过结合Item来创建不同类型的Meal对象的MealBuilder。BuilderPatternDemo,我们的演示类使用MealBuilder来创建一个Meal。
Item接口抽象:
Packing包装接口(纸质包装,瓶装):
Burger汉堡:
ChickenBurger鸡肉汉堡:
VegBurger蔬菜汉堡:
Bottle瓶装:
Wrapper纸质包装:
ColdDrink冷饮:
Coke可口可乐:
Pepsi百事可乐:
Meal:
MealBuilder:
BuilderPatternDemo:
构造了一个鸡肉百事可乐汉堡和一个蔬菜可口可乐汉堡。