首页 > 代码库 > java设计模式--结构型模式--组合模式

java设计模式--结构型模式--组合模式

什么是组合模式,这个有待研究,个人觉得是各类组合而形成的一种结构吧。

组合模式:

  

 1                                                 组合模式 2  概述 3     将对象组合成树形结构以表示"部分-整体"的层次结构。"Composite使得用户对单个对象和组合对象的使用具有一致性。" 4   5   6  适用性 7     1.你想表示对象的部分-整体层次结构。 8  9     2.你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。10 11 12  参与者13     1.Component14       为组合中的对象声明接口。15       在适当的情况下,实现所有类共有接口的缺省行为。16       声明一个接口用于访问和管理Component的子组件。17       (可选)在递归结构中定义一个接口,用于访问一个父部件,并在合适的情况下实现它。18 19     2.Leaf20       在组合中表示叶节点对象,叶节点没有子节点。21       在组合中定义节点对象的行为。22 23     3.Composite24       定义有子部件的那些部件的行为。25       存储子部件。26       在Component接口中实现与子部件有关的操作。27 28     4.Client29       通过Component接口操纵组合部件的对象。

 

测试类:

 1 import java.util.List; 2   3 public class Test {   4     public static void main(String[] args) { 5         Employer pm = new ProjectManager("项目经理"); 6         Employer pa = new ProjectAssistant("项目助理"); 7         //Employer programmer1 = new Programmer("程序员一"); 8         Employer programmer2 = new Programmer("程序员二"); 9         10         pm.add(pa);//为项目经理添加项目助理11         pm.add(programmer2);//为项目经理添加程序员12         13         List<Employer> ems = pm.getEmployers();14         for (Employer em : ems) {15             System.out.println(em.getName());16         }17     }18 }

 

 1 import java.util.List; 2   3 public abstract class Employer { 4  5     private String name; 6      7     public void setName(String name) { 8         this.name = name; 9     }10     11     public String getName() {12         return this.name;13     }14     15     public abstract void add(Employer employer);16     17     public abstract void delete(Employer employer);18     19     public List<Employer> employers;20     21     public void printInfo() {22         System.out.println(name);23     }24     25     public List<Employer> getEmployers() {26         return this.employers;27     }28 }

 

 1 import java.util.ArrayList; 2   3 public class ProjectManager extends Employer { 4      5     public ProjectManager(String name) { 6         setName(name); 7         employers = new ArrayList<Employer>(); 8     } 9     10     public void add(Employer employer) {11         employers.add(employer);12     }13 14     public void delete(Employer employer) {15         employers.remove(employer);16     }17 }

 

 1 public class ProjectAssistant extends Employer { 2  3     public ProjectAssistant(String name) { 4         setName(name); 5         employers = null;//项目助理, 表示没有下属了 6     } 7  8     public void add(Employer employer) { 9         10     }11 12     public void delete(Employer employer) {13         14     }15 }

 

 1 public class Programmer extends Employer { 2  3     public Programmer(String name) { 4         setName(name); 5         employers = null;//程序员, 表示没有下属了 6     } 7  8     public void add(Employer employer) { 9         10     }11 12     public void delete(Employer employer) {13         14     }15 }

 

今天又学习了哈。。。

 

java设计模式--结构型模式--组合模式