某公司的组织结构图可用树状结构描述,现采用组合设计模式来设计。其中Company 为抽象类,定义了在组织结构图上添加( add)和删除(delete)分公司/办事处或者部门的方法接口。类ConcreteCompany表示具体的分公司或者办事处,分公司或办事处下可以设置不同的部门。类HRDepartment和FinanceDepartment 分别表示人力资源部和财务部。import java.util.*;public (1) Company {protected String name;public Company(String name) { (2) = name; }public abstract void add(Company c); // 增加子公司、办事处或部门public abstract void delete(Company c); // 删除子公司、办事处或部门}class ConcreteCompany extends Company {private List< (3) > children = new ArrayList< (4) >(); // 存储子公司、办事处或部门public ConcreteCompany(String name) { super(name); }public void add(Company c) { (5) .add(c); }public void delete(Company c) { (6) .remove(c); }} class HRDepartment extends Company {public HRDepartment(String name) { super(name); }// 其他代码省略} class FinanceDepartment extends Company {public FinanceDepartment(String name) { super(name); }// 其他代码省略} public class Test {public static void main(String[] args) {ConcreteCompany root = new ConcreteCompany("北京总公司");root.add(new HRDepartment("总公司人力资源部"));root.add(new FinanceDepartment("总公司财务部"));ConcreteCompany comp = new ConcreteCompany("上海分公司");comp.add(new HRDepartment("上海分公司人力资源部"));comp.add(new FinanceDepartment("上海分公司财务部")); (7) ;//将上海分公司添加到北京总公司ConcreteCompany comp1 = new ConcreteCompany("南京办事处");comp1.add(new HRDepartment("南京办事处人力资源部"));comp1.add(new FinanceDepartment("南京办事处财务部")); (8) ; //将南京办事处添加到上海分公司// 其他代码省略}}
发布时间:2024-04-10 08:08:26