3.5 《硬啃设计模式》 第14章 超酷绘图软件 – 组合模式(Composite Pattern)

某绘图软件,能绘制点、线、面等简单几何形体。
同时也能将这些简单形体组合成更复杂的图形。

以下是该软件的设计:

组合2.png 

说明:
1.Container依然是包含Element,但同时Container继承了Element,这表明Container可以包含Container,这样就可以组合后可以再组合了。
2.Element定义了集合的常见方法,可根据实际需要调整。
3.Container的Draw()方法并不会画自己,而是遍历自己的儿子,调用儿子的Draw()方法。
组合以后再组合,其实就是组织成一棵对象树,这棵树有很多节点,有些节点还包含子节点,组合模式可以帮助我们组织这样的一棵树。

看看组合模式的类图

组合3.png 

说明:
1.这棵对象树中的所有节点,都被抽象成Component。
2.如果节点能包含节点,这些节点就是Container。
3.如果节点不能再包含节点,这些节点就是Leaf。

4.Component定义了Container和Leaf的通用方法,实际上Container和Leaf是有差异的,为了保持一致性,Leaf中不可避免地有一些无用方法(如Add,GetChild,Remove),这是组合模式的一个缺点。


请看下一文……      

作者:张传波

创新工场创业课堂(敏捷课程)讲师

软件研发管理资深顾问

CMMI首席专家

《火球——UML大战需求分析》作者

《硬啃设计模式》作者

www.umlonline.org创办人

来源:张传波

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2013年10月5日
下一篇 2013年10月5日

相关推荐