-
- 摩卡里有has a深度烘焙咖啡
- 满足的原则:开放封闭
- 装饰器模式:
- 当你想赋予一个对象一些动态职责时,用decorator
- 装饰器为扩展功能提供了一个灵活的子类替代方法。
- 动态扩展;
- 比继承好;
-
- 什么时候用:
- 在不影响其他对象的情况下,动态地向单个对象添加职责。
- 当子类化扩展不现实时。(不能向子类添加新方法)
有时候,大量的独立扩展是可能的,并且会产生大量的子类来支持每一个组合。或者类定义可能被隐藏,或者在子类化时不可用。
-
- 好处:更灵活,避免类爆炸,很多行为组合可被创建
- 缺点:装饰器和它的组件是不一样的;类(对象)太多
- 实现:
- 接口一致,一个装饰器的接口与其装饰组件的接口一致
- 保持组件类的轻量化
- 参与者:
- component组件:为对象定义可以动态添加职责的接口。
- concrete具体构件:定义一个可以附加额外责任的对象。
- 装饰器:维护对一个组件对象的参数并定义符合组件接口的接口。
- 具体装饰器:向组件添加职责。
-
- 例:在深度烘焙咖啡上加两份摩卡,一份whip