1、原始问题
星巴克咖啡项目:
1) 咖啡种类/单品咖啡:Espresso(意大利浓咖啡)、ShortBlack、LongBlack(美式咖啡)、Decaf(无因咖啡)
2)
调料:
Milk
、
Soy(
豆浆
)
、
Chocolate
3)
使用
OO
的来计算不同种类咖啡的
费用
:
客户可以点
单品咖啡
,也可以
单品咖
啡
+
调料组合
。
方案一:容易出现类爆炸每种组合抽象出一个类来。
方案二:可以做改进,将调料内置到Drink类,这样就
不
会造成类数量过多。从而提高项目的维护性
缺点:
在
增加或者删除调料种类
时,代码的维护量很大
2、装饰者模式
装饰者模式:动态的将新功能附加到对象上。在对象功能扩展方面,它比继承更有弹性,装饰者模式也体现了开闭原则(ocp)
3、装饰者在源码中的应用