装饰模式 - 章节
概念
·也叫包装器
·添加不影响他人的行为
·不仅仅是继承
·单一职责原则
·组成动态行为
·例子:
- java.io.lnputStream
- java.util.Collections # checkedList
- UI组件
设计注意事项
继承的基础
利用组合和继承(is-a, has-a)
选择子类化
构造函数需要层次结构中的实例
UML图
例子:File
训练:装饰模式
Component, ConcreteComponent, Decorator, ConcreteDecorator
创建装饰
实现另一个装饰
不是创造模式
陷阱
·每个新添加的功能都有一个新类
·多个小对象
·经常与简单的继承混淆
对比
组成模式
·树结构
·Leaf与Composite具有相同的接口
·对象之间的团结
装饰模式
·包含另一个实体
·修改行为(添加)
·不改变底层对象
装饰模式总结
·原始对象可以保持不变
·添加功能的独特方式
·与继承相混淆
·对于客户来说可能更复杂