设计模式之组合模式
组合模式:
定义:将对象以树形结构组织起来,以达成“部分-整体” 的层次结构,使得客户端对单个对象和组合对象的使用具有一致性.
优点:1.使客户端调用简单,客户端可以一致的使用组合结构或其中单个对象,用户就不必关系自己处理的是单个对象还是整个组合结构,这就简化了客户端代码。
2.更容易在组合体内加入对象部件. 客户端不必因为加入了新的对象部件而更改代码。
举例:像数据结构里面的树,想要对每个叶子节点都进行操作的话,用这个模式就比较的好.
下面我举例代码:
package com.mode.composite; public interface Composite { void update(); void add(Composite composite) throws Exception; } package com.mode.composite; import java.util.ArrayList; import java.util.List; public class Branch implements Composite{ List<Composite> compositeList = new ArrayList<Composite>(); @Override public void update() { for(Composite com:compositeList){ com.update(); } } @Override public void add(Composite composite) { compositeList.add(composite); } } package com.mode.composite; public class Leaf implements Composite{ @Override public void update() { System.out.println("Leaf.update()"+this); } @Override public void add(Composite composite)throws Exception { throw new Exception("叶子节点不能再添加"); } } package com.mode.composite; public class Client { public static void main(String[] args) throws Exception { Composite root = new Branch(); Composite branch = new Branch(); root.add(new Leaf()); root.add(new Leaf()); root.add(branch); branch.add(new Leaf()); branch.add(new Leaf()); root.update(); } }