首页 > 其他 > 详细

设计模式学习总结(7) 组合模式

时间:2014-03-28 16:45:05      阅读:392      评论:0      收藏:0      [点我收藏+]

本系列主要记录设计模式的意图是什么,它要解决一个什么问题,什么时候可以使用它;它是如何解决的,掌握它的结构图,记住它的关键代码;能够想到至少两个它的应用实例,一个生活中的,一个软件中的;这个模式的优缺点是什么,其有哪些使用场景,在使用时要注意什么。

 

7.组合模式

意图将对象组合成树形结构以表示“部分-整体”的层次结构。Composite模式使得用户对单个对象和组合对象的使用具有一致性。

主要解决它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。

什么时候使用:1.你想表示对象的部分-整体层次结构(树形结构) 2.你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。

如何解决 :树枝和叶子实现统一接口,树枝内部组合该接口

结构图

bubuko.com,布布扣

关键代码:树枝内部组合该接口,并且含有内部属性List,里面放Component

应用实例:1.算术表达式包括操作数、操作符和另一个操作数,其中,另一个操作符也可以是操作树,操作符和另一个操作数 2.在JAVA AWT和SWING中,对于Button和Checkbox是树叶,Container是树枝

优点:1. 高层模块调用简单 2.节点自由增加

缺点:在使用组合模式时,起叶子和树枝的声明都是实现类,而不是接口,违反了依赖倒置原则

使用场景部分、整体场景,如树形菜单,文件、文件夹的管理 

注意事项:定义时为具体类

设计模式学习总结(7) 组合模式,布布扣,bubuko.com

设计模式学习总结(7) 组合模式

原文:http://blog.csdn.net/hacke2/article/details/22387837

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!