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

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

 

尊重作者,转载请注明晔阳的Bloghttp://blog.csdn.net/hacke2

 

 

7.组合模式

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

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

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

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

结构图:

设计模式学习总结(7) 组合模式_第1张图片

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

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

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

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

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

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

 

你可能感兴趣的:(设计模式,组合模式,合成模式)