设计模式之组合模式
概念
组合模式(Composite),将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性
优点
- 简化了客户端代码,统一地处理复合结构和单个对象
- 更容易添加新类型的组件,不需要更改现有代码
什么时候使用组合模式
- 你希望表示对象的部分-整体层次结构
- 你希望客户端能够忽略对象组合和单个对象之间的差异。客户端将统一地对待复合结构中的所有对象
示例
每个句子都是由单词组成的,而单词又由字符组成。每一个对象都是可打印的,在它们之前或之后都可以打印一些东西,比如句子总是以句号结束,单词总是在它之前有空格。 这里我们有基类LetterComposite和不同的可打印类型Letter, Word和Sentence
1 |
|
1 |
|
1 |
|
1 |
|
组合模式的两种实现:透明模式和安全模式
注意事项
- 会使设计过于一般化。限制组合的某些组件可能比较困难
- 限制组合中组件的类型变得更加困难
组合模式的主要优点–统一对待单个物体和复合物体–也是它的主要弱点。通过将设计推广到处理范围广泛的场景,模式牺牲了特定性,使其更难强制执行约束,并导致潜在的误用或意外行为。这种权衡是模式本身固有的,在决定是否在给定上下文中使用它时必须仔细考虑
设计模式之组合模式
http://s1mplecode.com/design-pattern/composite.html