组合模式(Composite)

来源:互联网 发布:卞正伟淘宝店 编辑:程序博客网 时间:2024/05/21 01:47
     将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。

直接来看代码:
import java.util.List;//抽象的部件类描述将来所有部件共有的行为public abstract class Employer {private String name;public void setName(String name) {this.name = name;}public String getName() {return this.name;}//添加部件public abstract void add(Employer employer);//删除部件public abstract void delete(Employer employer);public List<Employer> employers;public void printInfo() {System.out.println(name);}public List<Employer> getEmployers() {return this.employers;}}
//相当于叶子, 组合部件类public class Programmer extends Employer {public Programmer(String name){setName(name);employers = null;}@Override//叶子节点不具备添加的能力,所以不实现public void add(Employer employer) {}@Override//叶子节点不具备添加的能力必然也不能删除public void delete(Employer employer) {}}
import java.util.ArrayList;//组合类public class ProjectManager extends Employer {public ProjectManager(String name) {setName(name);employers = new ArrayList<>();}@Override//添加节点 添加部件public void add(Employer employer) {employers.add(employer);}@Override//删除节点 删除部件public void delete(Employer employer) {employers.remove(employer);}}

public class Test {/** * @param args */public static void main(String[] args) {Employer pm = new ProjectManager("项目经理");Employer programmer1 = new Programmer("程序员一");Employer programmer2 = new Programmer("程序员二");pm.add(programmer1);pm.add(programmer2);List<Employer> ems = pm.getEmployers();for (Employer em : ems) {System.out.println(em.getName());}}}

0 0