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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值