Head First 设计模式学习笔记(3)---装饰器模式

Head First 设计模式学习笔记(3)---装饰器模式

 

设计原则1:类应该对扩展开发,对修改关闭。(最重要的设计原则之一)

 

装饰器模式:装饰器模式动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案。

 

 

语句1:大师:牢记,代码应该如同晚霞中的莲花一样的关闭(免于改变),如同晨曦中的莲花一样的开发(能够扩展)。

 

 

 

语句2:在选择需要被扩展的代码时要小心,每个地方都采用开放-关闭原则是一种浪费,也没必要,还会导致代码变得复杂且难以理解。

 

 

问题1:以星巴兹遇到的问题为例:类数量爆炸、设计死板,以及新类加入的新功能并不适用于所有的子类。

解决1:以饮料为主体,然后在运行时以调料来“装饰”(decorate)饮料。比方说,如果顾客想要摩卡和奶泡深焙咖啡,那么,要做的是:

(1)拿一个深焙咖啡(DarkRoast)对象

(2)以摩卡(Mocha)对象装饰它

(3)以奶泡(Whin)对象装饰它

(4)调用const()方法,并依赖委托(delegate)将调料的价钱加上去

 

 

 

 图(1)

 

Head First 设计模式学习笔记(3)---装饰器模式_第1张图片

图(2)

你可能感兴趣的:(Head First 设计模式学习笔记(3)---装饰器模式)