目录
[显示]

1.摘要

Composite模式将对象组合成树形结构以表示“部分-整体”的层次结构。它使得客户对单个对象和复合对象的使用具有一致性,它适合于可以用递归思想解决的问题。

2. 针对问题

一般的GUI框架都会有“容器”和“控件”的概念,一个容器可以包含多个控件,一个容器也可以包含其他容器;控件可以包含子控件,几个控件组合到容器里可以作为新的控件。如果代码实现中单独处理“容器”和“控件”的绘制的话将会十分复杂,如果用递归的方式去思考这个问题,那么问题可以简化成:

这就是Composite模式。

3. 介绍

将对象组合成树形结构以表示“部分-整体”的层次结构。它使得客户对单个对象和复合对象的使用具有一致性。

4. 实现

Composite模式的UML图如下:

Composite是典型的树形结构,如下图:

其中:
1、Leaf节点没有子节点
2、Component节点的Operation被调用时,除了自身的操作(可以空操作),它还会将请求转发给子节点。
3、可以为Component增加getComposite接口以区分Composite与Leaf节点。
4、Component可以提供尽量多的接口并提供空实现,由具体子类实现具体逻辑。

5. 特点

1、Composite模式包括两部分:对外提供的具体操作接口与维护树形结构相关的接口。
2、每个具体操作都可以分解为自身的操作与对下级节点的操作。
3、客户可以一致的使用组合对象或单个对象。

6. 相关文章

设计模式总结

7. 参考文章

  1. 《设计模式_可复用面向对象软件的基础》