GOF设计模式-组合模式
来源:互联网 发布:2017年中国离婚率数据 编辑:程序博客网 时间:2024/04/30 05:06
组合模式:将对象合成树形结果以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。
像xml的结构就是组合组合,dom4j解析xml的时候,就是这样的。
- Company:是一个抽象接口,实现所有类共有接口的默认行为。
- ConcreteCompany: 实现类执行具体的添加节点,删除节点,等操作,
- FinanceDepartment,HRDepartment:一个具体的节点部门(可以忽略掉add,和remove方法)
模拟一个总公司 - 分公司的结构和职能输出,
company
public abstract class Company { protected String name; public Company(String name) { this.name = name; } public abstract void add(Company c); public abstract void remove(Company c); public abstract void dispaly(String depth); // 显示 public abstract void lineOfDuty(); // 履行职责}
public class ConcreteCompany extends Company { private List<Company> children = new ArrayList<Company>(); public ConcreteCompany(String name) { super(name); } @Override public void add(Company c) { children.add(c); } @Override public void remove(Company c) { children.remove(c); } @Override public void dispaly(String depth) { System.out.println("-" + depth + name); for (Company company : children){ company.dispaly(depth + "--"); } } @Override public void lineOfDuty() { for (Company company : children){ company.lineOfDuty(); } }}
public class FinanceDepartment extends Company { public FinanceDepartment(String name) { super(name); } @Override public void add(Company c) { } @Override public void remove(Company c) { } @Override public void dispaly(String depth) { System.out.println("-" + depth + name); } @Override public void lineOfDuty() { System.out.println(name + " 公司财务收支管理" ); }}
public class HRDepartment extends Company { public HRDepartment(String name) { super(name); } @Override public void add(Company c) { } @Override public void remove(Company c) { } @Override public void dispaly(String depth) { System.out.println("-" + depth + name); } @Override public void lineOfDuty() { System.out.println(name + " 员工招聘培训管理" ); }}
public class Test { public static void main(String[] args) { ConcreteCompany rootChrldren = new ConcreteCompany("北京总公司"); rootChrldren.add(new HRDepartment("总公司人力资源部")); rootChrldren.add(new FinanceDepartment("总公司财务部")); ConcreteCompany children = new ConcreteCompany("上海华东分公司"); children.add(new HRDepartment("上海华东分公司人力资源部")); children.add(new FinanceDepartment("上海华东分公司财务部")); rootChrldren.add(children); System.out.println("结构图:"); rootChrldren.dispaly("-"); System.out.println("职责:"); rootChrldren.lineOfDuty(); }}
代码地址:https://github.com/mazh1992/model/
0 0
- GOF设计模式-组合模式
- GOF-设计模式之COMPOSITE(组合)
- GOF之组合模式
- GOF 23设计模式之 组合模式(composite)
- 设计模式与GoF
- GOF设计模式
- GoF的设计模式
- GOF设计模式
- GOF设计模式
- ----GoF 设计模式概要
- 戏说GoF设计模式
- GOF设计模式
- 设计模式GOF
- GoF是什么----设计模式
- GOF设计模式
- GOF设计模式
- Gof 23设计模式
- GOF 23设计模式
- JavaScript之return false
- Java合成与继承
- iOS提取PDF中的文字
- 机器学习生态全景图3.0
- 移动前端头部标签(HTML5 head meta)
- GOF设计模式-组合模式
- Eclipse下启动tomcat报错:/bin/bootstrap.jar which is referenced by the classpath, does not exist.
- RHEL7配置Xmanger远程访问
- 为何Safari不如Chrome?
- JS字符串的相关方法
- c++简记—类和对象
- Sublime Text 3 常用插件以及安装方法
- 一套不错的基于Bootstrap的博客系统静态页面
- 获取指定日期的后(前)一(n)天(转)