Java设计模式之组合模式
来源:互联网 发布:网上投票系统 源码 编辑:程序博客网 时间:2024/06/17 15:28
组合模式(composite)
概念:将对象组合成树形结构以表示”部分-整体”的层次结构。”Composite”使得用户对单个对象和组合对象的使用具有一致性
适用:
1.想用部分-整体结构层次。
2.希望用户忽略组合对象与单个对象的不同,用户将统一的使用组合结构中的所有对象。
示例代码:
/** *Component接口 */public abstract class Component{ String name; public abstract void add(Component c); public abstract void remove(Component c); public abstract void eachChild(); }
/** * 定义有子节点的行为,用来存储子部件,在Component接口中实现与子部件有关的操作 */public class Composite extends Component{ // 用来保存节点的子节点 List<Component> list = new ArrayList<Component>(); // 添加节点 添加部件 public void add(Component c) { list.add(c); } // 删除节点 删除部件 public void remove(Component c) { list.remove(c); } // 遍历子节点 public void eachChild() { System.out.println(name + "执行了"); for (Component c : list) { c.eachChild(); } } }
/** * 在组合中表示叶节点对象,叶节点没有子节点 */public class Leaf extends Component{ // 叶子节点不具备添加的能力,所以不实现 public void add(Component c) { System.out.println(""); } // 叶子节点不具备添加的能力必然也不能实现 public void remove(Component c) { System.out.println(""); } // 叶子节点没有子节点所以显示自己的执行结果 public void eachChild() { System.out.println(name + "执行了"); } }
/** * 组合模式的测试 * 将对象组合成树形结构以表示"部分-整体"的层次结构。"Composite"使得用户对单个对象和组合对象的使用具有一致性 */public class Test { public static void main(String[] args) { // 构造根节点 Composite rootComposite = new Composite(); rootComposite.name = "根节点"; // 左节点 Composite compositeLeft = new Composite(); compositeLeft.name = "左节点"; // 构建右节点,添加两个叶子几点,也就是子部件 Composite compositeRight = new Composite(); compositeRight.name = "右节点"; Leaf leaf1 = new Leaf(); leaf1.name = "右-子节点1"; Leaf leaf2 = new Leaf(); leaf2.name = "右-子节点2"; compositeRight.add(leaf1); compositeRight.add(leaf2); // 左右节点加入 根节点 rootComposite.add(compositeRight); rootComposite.add(compositeLeft); // 遍历组合部件 rootComposite.eachChild(); }}
阅读全文
0 0
- java设计模式之组合设计模式
- java设计模式之组合模式
- java设计模式之组合模式Composite
- JAVA设计模式之组合模式
- java设计模式之组合模式
- 设计模式之组合模式java实现
- java设计模式之组合模式
- 【Java设计模式】之组合模式
- Java设计模式之组合模式
- Java设计模式泛型化之组合模式
- java设计模式之组合模式
- JAVA设计模式初探之组合模式
- JAVA设计模式初探之组合模式
- java设计模式之组合模式
- java设计模式之组合模式
- JAVA设计模式初探之组合模式
- java设计模式之组合模式篇
- Java设计模式之组合模式
- 实现字符串右循环移位函数
- 大数据(十八)Hive【Hive安装配置(本地derby模式)】
- C++ primer 练习
- C++/C++11中<numeric>的使用
- JSP中涉及到的编码问题
- Java设计模式之组合模式
- 【Selenium异常】NoSuchElementException
- 压缩感知-Gradient Projection for Sparse Reconstruction(梯度投影稀疏重建)
- Memcache的三种Java客户端的对比和选择
- C/C++把字符串划分为二维字数组,2种分割方法
- 七、计算机网络之连网与名称解析
- 20170912_归并两个已经排好序的单链表
- 记录记录
- vue关于微信开发,输入法把底部顶上去的情况