针对问题

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

这就是Composite模式。

介绍

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

实现

Composite模式的UML图如下:

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

其中:
1、Leaf节点没有子节点
2、Component节点的Operation被调用时,除了自身的操作(可以空操作),它还会将请求转发给子节点。… Read the rest