1. Composite 定义
:
将对象以树形结构组织起来,以达成“部分
-
整体”的层次结构,使得客户端对单个对象和组合对象的使用具有一致性。
想到
Composite
就应该想到树形结构图。组合体内这些对象都有共同接口。当组合体一个对象的方法被调用时,
Composite
将遍历整个“子树”,寻找同样包含这个方法的对象执行之。
类似
Chain of
Responsibility
模式(责任链)。
2. Composite 好处
(目的
):
The
intent of the COMPOSITE pattern is to let clients treat
individual objects and compositions of objects uniformly
.
1.
简化调用:使客户端调用简单,客户端可以一致的使用组合结构或其中单个对象,用户就不必关注自己处理的是单个对象还是整个组合结构,这就简化了客户端代码。
2.
容易组装:更容易在组合体内加入对象部件
.
客户端不必因为加入了新的对象部件而更改代码。
3. Composite 缺点
:
1.
循环
Cycles
在实现
Leaf
和
Composite
两个类型的公共方法时,引入“递归
(recursive)
”机制;而“递归”,可能引入“循环
(Cycles)
”的危险。
A.
对于某些方法,“有限循环
(a definite loop)
”是有意义的;但应该加入相应代码避免“无限循环
(an indefinite loop)
”
B.
对于某些方法,循环导致“无意义”——例如,
maxNumOfSteps()
C.
不能保证
composites
的对象结构是
Tree
,因此不能保证节点只有一个双亲节点
4. Composite 使用
方法:
When
you model a composite, two powerful concepts emerge:
1)
Design groups so that they can contain either individual items or other groups.
2)
Define behaviors common to both individual objects and compositions.
4.1
Composite
的
Class Diagram:
图4.1 Composite设计模式
4.2
假设
Composites
的对象结构为
Tree
,一个简单的例子实现
Composite
模式
getMachineCount()
方法实现
4.3
考虑到
Composites
的对象结构可能为
Tree
,有向无环图
DAG
,但更有可能为含有环的有向图
boolean
isTree(Set)
方法实现
客户端均用
isTree()
调用
图4.2 4.3 Composite模式实例
*******************************************************************************
参见《设计模式》(板桥里人
http://www.jdon.com 2002/04/27
)
参见《
Java
设计模式》
P47 chapter5 composite
- 大小: 9.1 KB
- 大小: 27.6 KB
分享到:
相关推荐
设计模式 C++ 实现(7)——外观模式、组合模式 本文主要介绍了设计模式中的外观模式和组合模式,并使用 C++ 实现了两个模式的示例代码。外观模式提供了一个高层接口,封装了子系统中的复杂结构,使得客户使用起来...
本篇主要探讨的是结构型模式之一——组合模式。 #### 二、组合模式定义 组合模式(Composite Pattern)是一种树形结构的设计模式,它将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户可以对...
组合模式是一种结构型设计模式,它允许我们使用树形结构来表示部分-整体关系,使得我们能够像处理单个对象一样处理整个集合。在JAVA中,组合模式的应用可以帮助开发者更灵活地处理对象间的层次结构,使得客户端代码...
### 设计模式实验报告——组合模式 #### 实验目的与背景 本次实验旨在通过实践学习设计模式中的组合模式,理解其工作原理及应用场景。组合模式(Composite Pattern)是一种结构型设计模式,它允许用户将对象组合成...
同时,这也是对面向对象设计原则——开闭原则、依赖倒置原则的实践,因为组合模式使得代码对扩展开放,对修改关闭。 在实验中,你可以编写单元测试来验证组合模式的正确性,确保无论是处理单个文件还是整个目录结构...
9. 组合模式(Composite Pattern) 10. 外观模式(Facade Pattern) 11. 享元模式(Flyweight Pattern) 12. 代理模式(Proxy Pattern) 行为型 13. 模板方法(Template Method) 14. 命令模式(Command Pattern) ...
结构型模式如适配器(Adapter)、装饰器(Decorator)、代理(Proxy)、桥接(Bridge)和组合(Composite),则关注如何将不同组件组合成更复杂的结构,以实现新的功能。行为型模式如策略(Strategy)、观察者...
- **结构型模式**(共7种):适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 - **行为型模式**(共11种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、...
本文实例讲述了Python设计模式之组合模式原理与用法。...设计模式——组合模式 组合模式(Composite Pattern):将对象组合成成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用
组合模式通常包括三个主要角色:叶子节点(Leaf)、组合节点(Composite)和客户端(Client)。叶子节点代表树结构中的基本单位,不具备子节点;组合节点则包含子节点,并可以拥有其他组合节点或叶子节点,实现对子...
2.2.3 组合模式 27 2.3 格式化 27 2.3.1 封装格式化算法 27 2.3.2 Compositor和Composition 27 2.3.3 策略模式 29 2.4 修饰用户界面 29 2.4.1 透明围栏 29 2.4.2 Monoglyph 30 2.4.3 Decorator 模式 32 2.5 支持多种...
4. **Composite模式**:将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。这种模式适用于处理具有层级关系的对象集合,以及需要动态增加或删除层级中的对象。 ...
- 组合模式(Composite):将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。 - 装饰模式(Decorator):动态地给一个对象添加一些额外的职责,提供比继承更...
2. **结构型模式**:如适配器(Adapter)、装饰器(Decorator)、代理(Proxy)、桥接(Bridge)、组合(Composite)、外观(Facade)和享元(Flyweight)。这些模式处理对象的组合和关系,提供更好的结构和接口,...
管理系统java sal源码 [toc] 设计模式 ...Pattern)组合模式(Composite Pattern)装饰器模式(Decorator Pattern)外观模式(Facade Pattern)享元模式(Flyweight Pattern)代理模式(Proxy Pattern)
"复合实践"是指在软件设计中应用复合模式的过程,这主要针对的是面向对象编程中的结构型设计模式之一——复合模式(Composite Pattern)。复合模式允许我们表示部分-整体层次结构,使得客户端代码可以一致地处理单个...
2. **结构型模式**:如适配器模式(Adapter)、装饰器模式(Decorator)、代理模式(Proxy)、桥接模式(Bridge)、组合模式(Composite)、外观模式(Facade)和享元模式(Flyweight)。这些模式处理对象之间的关系...
桥接模式-Bridge Pattern 处理多维度变化——桥接模式(一) 处理多维度变化——桥接模式(二) 处理多维度变化——桥接模式(三) 处理多维度变化——桥接模式(四) 组合模式-Composite Pattern 树形结构的处理...