首页 > 代码库 > 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设计模式--结构型模式--组合模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。