浏览 2933 次
锁定老帖子 主题:“学习OO好榜样”之Composite模式
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-01-22
此模式巧妙之处在于,树叶和枝干实现了同一接口,但树干同时是装载该接口实现类实例的容器,树干可以容纳树叶、同时也可以再容纳树干,于是,一棵数就完美地被描绘出来了。 一个比较典型的例子就是,界面上的Panel是容器的同时、也是控件,可以容纳控件的同时也可以再容纳容器(这里说得就比较罗嗦了,容器本身就是控件嘛)。 但需要注意的是,容器对接口方法的实现需要自律,通常是遍历调用容器内容纳的接口实现类实例的同名方法。 JUnit架构中也有Composite模式的完美应用,TestCase是Test、TestSuite也是Test,但TestSuite是容器、可以容纳Test实现类实例,即,可以容纳TestCase实例和TestSuite实例。于是我们设计测试流程的时候,可以把测试用例任意打包、任意组合、包了再包。 记得以前实现类似算法,每次都要判断是否是叶子、或者优化成比较难以理解的递归算法,总之不是十分理想。 等看到Composite模式的时候真就是相见恨晚了。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |