组合设计模式实现绘图 Pannel
![组合设计模式实现绘图Pannel](https://static001.geekbang.org/infoq/e9/e93e2379fb3ede3a852dd4d380e86dcd.jpeg)
1,组合设计模式
组合设计模式一般用来描述树形结构的对象关系,是属于对象结构设计模式的一种。通常的表现形式是循环遍历。
组合模式的优缺点很明显,优点在于在客户端调用程序的时候只需要一个入口就可以完成所有的操作,对于调用方而言忽略对象之间的关系更注重对象之间的职责,满足了开闭原则。缺点的话则是,让对象之间的关系变得更加复杂不宜与理解和查看。
2,使用组合模式实现绘图功能并且输出指定语句
![](https://static001.geekbang.org/infoq/37/3781039e0aefcc4c0510e44c7160c5bb.png)
思路:
首先所有的元素都应该为 Component(组件)
其次观察树形结构图,找出根节点和叶子节点。
根节点的话有两个 windowForm 以及 Frame,其他为各自对应的叶子节点。
设计:
Component
![](https://static001.geekbang.org/infoq/3a/3ac8257add39e4d8490cac72ed19b2c0.png)
windowForm
![](https://static001.geekbang.org/infoq/b5/b5a2af0d20d1c7b3ef4d8643d7b1aecd.png)
Frame
![](https://static001.geekbang.org/infoq/14/143a9f59f150bc959a846203a001b8f3.png)
当基础组件和根节点设计好后,只需要按照要求设计我们需要的叶子节点组件就可以了
Button
![](https://static001.geekbang.org/infoq/28/28222c60d5ffb0271d039ab30229f48e.png)
其他的省略....
客户端调用
![](https://static001.geekbang.org/infoq/c3/c348ca283b0d7a1cbe253f2ca174630d.png)
这样就用组合设计模式实现了一个简单的绘图工具的调用
评论