设计模式之组合模式
来源:互联网 发布:如何开个淘宝网店 编辑:程序博客网 时间:2024/05/05 05:22
组合模式:将对象组合成属性结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。
目录结构、总公司分公司这样的结构最适合采用组合模式来实现。
组合模式可分为:
抽象构建角色:定义了所有参与组合对象的统一接口;
树枝构建角色:拥有子对象的对象,定义了树枝构建对象的统一行为;
树叶构建角色:最末端的对象,不拥有子对象;
现在用类似目录结构的层级结构来举例。
Component抽象构建角色:
public abstract class Component {public String name;public Component(String name) {super();this.name = name;}public abstract void add(Component c);public abstract void remove(Component c);public abstract void display(int deepth);public void desperate(int deepth) {for(int i = 0; i < deepth; i++) {System.out.print("-");}System.out.println(this.name);}}树枝构建对象:
public class Composite extends Component {public Composite(String name) {super(name);}public List<Component> lists = new ArrayList<Component>();@Overridepublic void add(Component c) {lists.add(c);}@Overridepublic void remove(Component c) {lists.remove(c);}@Overridepublic void display(int deepth) {desperate(deepth);for(Component c : lists) {c.display(deepth + 2);}}}树叶构建角色:
public class Leaf extends Component {public Leaf(String name) {super(name);}@Overridepublic void add(Component c) {}@Overridepublic void remove(Component c) {}@Overridepublic void display(int deepth) {desperate(deepth);}}组建结构:
public static void main(String[] args) {Component root = new Composite("root");Component lv1 = new Composite("lv1");Component lv2 = new Composite("lv2");Component lv3 = new Composite("lv3");Component lv4 = new Composite("lv4");root.add(lv1);root.add(lv2);root.add(lv3);root.add(lv4);Component lv11 = new Leaf("lv11"); Component lv12 = new Leaf("lv12"); Component lv21 = new Leaf("lv21"); Component lv31 = new Leaf("lv31"); Component lv32 = new Leaf("lv32"); Component lv41 = new Leaf("lv41");lv1.add(lv11);lv1.add(lv12);lv2.add(lv21);lv3.add(lv31);lv3.add(lv32);lv4.add(lv41);root.display(2);}结果:
--root
----lv1
------lv11
------lv12
----lv2
------lv21
----lv3
------lv31
------lv32
----lv4
------lv41
0 0
- 设计模式之组合模式
- 设计模式之组合模式
- 设计模式之组合模式
- 设计模式之--组合模式
- 设计模式之组合模式
- 设计模式之组合模式
- 设计模式之组合模式
- 设计模式之组合模式
- 设计模式之---组合模式
- 设计模式之组合模式
- 设计模式之组合模式
- 设计模式之-------------组合模式
- 设计模式之组合模式
- 设计模式之组合模式
- 设计模式之组合模式
- 设计模式 之 组合模式
- 设计模式之组合模式
- 设计模式之组合模式
- lightoj 1006 矩阵快速幂
- mongodb入门
- Android截取字符串
- 【组队补题题】The Seventh Hunan Collegiate Programming Contest Semilive
- Qt 安装包制作框架:Qt Installer Framework
- 设计模式之组合模式
- JQuery 学习笔记
- Scala: 类
- NSIS简介
- NSRunLoop 浅谈
- html关于div控制比例,及控制图片显示形状
- C++学习
- 类别与继承简单理解
- jmeter java sampler测试java接口(二)测试自己的代码