读书人

设计方式之组合模式

发布时间: 2012-09-10 22:20:12 作者: rapoo

设计模式之组合模式
组合模式:
定义:将对象以树形结构组织起来,以达成“部分-整体” 的层次结构,使得客户端对单个对象和组合对象的使用具有一致性.
优点: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();           }       }      

读书人网 >软件开发

热点推荐