论坛首页 Java企业应用论坛

“学习OO好榜样”之Composite模式

浏览 2933 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2007-01-22  
个人感觉Composite模式是一个比较牛X的模式。完美地实现了“树”这一现实实体在OO软件世界的映射。
此模式巧妙之处在于,树叶和枝干实现了同一接口,但树干同时是装载该接口实现类实例的容器,树干可以容纳树叶、同时也可以再容纳树干,于是,一棵数就完美地被描绘出来了。
一个比较典型的例子就是,界面上的Panel是容器的同时、也是控件,可以容纳控件的同时也可以再容纳容器(这里说得就比较罗嗦了,容器本身就是控件嘛)。
但需要注意的是,容器对接口方法的实现需要自律,通常是遍历调用容器内容纳的接口实现类实例的同名方法。
JUnit架构中也有Composite模式的完美应用,TestCase是Test、TestSuite也是Test,但TestSuite是容器、可以容纳Test实现类实例,即,可以容纳TestCase实例和TestSuite实例。于是我们设计测试流程的时候,可以把测试用例任意打包、任意组合、包了再包。
记得以前实现类似算法,每次都要判断是否是叶子、或者优化成比较难以理解的递归算法,总之不是十分理想。
等看到Composite模式的时候真就是相见恨晚了。
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics