结构型模式之三——组合模式
来源:互联网 发布:mysql注入 1#1 编辑:程序博客网 时间:2024/06/05 05:08
模式定义
组合模式(Composite Pattern):组合多个对象形成树形结构以表示“整体-部分”的结构层次。组合模式对单个对象和组合对象的使用具有一致性。属于对象结构模式,它将对象组织到树结构中,可以用来描述整体部分的关系。
模式结构
1.Component
抽象构件可以是接口或抽象类,为叶子构件和容器构件对象声明接口,在该角色中可以包含所有子类共有行为的声明和方法。在抽象构件中定义了访问及管理它的子构件的方法,如增加子构件、删除子构件、获取子构件等。
2.Leaf
叶子构件在组合结构中表示叶子节点对象,叶子节点也没有子节点,它实现了在抽象构件中定义的行为。对于那些访问及管理子构件的方法,可以通过异常等方式处理。
3.Composite
容器构件在组合结构中表示容器节点对象,容器节点对象也包含子节点,其子节点可以说叶子节点也可以是容器节点,它提供一个集合用于存储子节点,实现了在抽象构件中定义的行为,包括那些访问及管理子构件的方法,在其业务方法中可以递归调用其子节点的业务方法。
实例
在水果盘中有一些水果,如苹果、香蕉、梨子,大水果盘中还可以放小水果盘,现需要对盘中的水果进行遍历(吃),当然如果对一个水果盘执行“吃”的方法,实际上就是吃其中的水果。使用组合模式模拟该场景
类图如下:
public interface MyElement { public void eat();}public class Apple implements MyElement { public void eat() { System.out.println("吃苹果!"); }}public class Banana implements MyElement { public void eat() { System.out.println("吃香蕉!"); }}public class Pear implements MyElement { public void eat() { System.out.println("吃梨子!"); }}public Plate implements MyElement { private ArrayList list = new ArrayList(); public void add(MyElement e) { list.add(e); } public void remove(MyElement e) { list.remove(e); } public void eat() { for (Object obj : list) { ((MyElement)obj).eat(); } }}
0 0
- 组合模式——结构型设计模式之三
- 结构型模式之三——组合模式
- java设计模式——结构型之组合模式
- 结构型模式之——组合模式
- 结构型之组合模式
- 结构型模式之 组合模式 笔记
- 设计模式-结构型之组合模式
- 结构型模式之组合模式
- 结构型模式之组合模式实现
- 结构型模式之组合模式
- 设计模式笔记--结构型模式之三--组合模式 Composite
- 设计模式9——结构型模式之组合模式
- 结构模式之组合模式
- 树形结构的处理——组合模式(三)
- 树形结构的处理——组合模式(三)
- 树形结构的处理——组合模式(三)
- 设计模式之十一:Composite(组合)—对象结构型模式
- (结构型模式)COMPOSITE——组合模式
- Android DownloadManager下载进度查询(系列3)
- 日报2015/10/19(第一行代码读书笔记)
- Find the Duplicate Number
- USACO-1.3:Combination Lock
- 机器学习:实例1--推荐系统架构
- 结构型模式之三——组合模式
- a valid provisioning profile not found
- 模拟器和真机运行都是屏幕上下有黑色的条
- ACM新手入门常见问题
- 黑马程序员——基础语法
- Linux程序移植到Android上
- C语言值传递,C语言地址传递
- C++STL之list双向链表容器
- 数据结构(一)STL二分法查找实现及上下界