设计模式的意义在于:面向业务内容、业务数据结构和系统架构,高内聚低耦合、优雅的将平面逻辑立体化。
1 package designPattern; 2 import java.util.ArrayList; 3 import java.util.List; 4 5 /** 6 * 组合模式 7 * @author Administrator 8 */ 9 public class B11_CompositeTest { 10 11 /** 12 * 将对象组合成树形结构以表示部分-整体的层次结构.composite使得用户对单个对象和组合对象的使用具有一致性 13 * 适用于: 14 * 1,你想表示对象的部分-整体结构 15 * 2,你希望用户忽略组合对象和单个对象的不同,用户将统一的使用组合结构中的所有对象. 16 */ 17 public static void main(String[] args) { 18 Employer e=new ProjectManager("项目经理"); 19 Employer e2=new ProjectAssistant("项目助理"); 20 Employer e3=new Programmer("程序员"); 21 e.add(e2); 22 e.add(e3); 23 List<Employer> empList=e.getEmployers(); 24 for (int i = 0; i < empList.size(); i++) { 25 System.out.println(i+": "+empList.get(i).getName()); 26 } 27 } 28 } 29 //1,Component 为组合中的对象声明接口。 在适当的情况下,实现所有类共有接口的缺省行为。 30 //声明一个接口用于访问和管理Component的子组件。(可选)在递归结构中定义一个接口,用于访问一个父部件,并在合适的情况下实现它。 31 abstract class Employer 32 { 33 private String name; 34 35 public String getName() { 36 return name; 37 } 38 public void setName(String name) { 39 this.name = name; 40 } 41 public abstract void add(Employer e); 42 public abstract void delete(Employer e); 43 public List<Employer> employers; 44 public void printInfo() { 45 System.out.println(this.name); 46 } 47 public List<Employer> getEmployers() 48 { 49 return this.employers; 50 } 51 } 52 //2,leaf 在组合中表示叶节点对象,叶节点没有子节点。在组合中定义节点对象的行为。 53 class Programmer extends Employer 54 { 55 public Programmer(String name) { 56 setName(name); 57 employers=null; 58 } 59 public void add(Employer e) { 60 61 } 62 public void delete(Employer e) { 63 64 } 65 } 66 class ProjectAssistant extends Employer 67 { 68 public ProjectAssistant(String name) { 69 setName(name); 70 employers=null; 71 } 72 public void add(Employer e) { 73 74 } 75 public void delete(Employer e) { 76 77 } 78 } 79 //Composite 定义有子部件的那些部件的行为。存储子部件。在Component接口中实现与子部件有关的操作。 80 class ProjectManager extends Employer 81 { 82 public ProjectManager(String name) { 83 super(); 84 setName(name); 85 employers=new ArrayList<Employer>(); 86 } 87 public void add(Employer e) { 88 employers.add(e); 89 } 90 public void delete(Employer e) { 91 employers.remove(e); 92 } 93 }
环境:JDK1.6,MAVEN,tomcat,eclipse
源码地址:http://files.cnblogs.com/files/xiluhua/designPattern.rar
欢迎亲们评论指教。