设为首页 加入收藏

TOP

设计模式(十)组合(结构型)(二)
2019-09-03 03:33:34 】 浏览:79
Tags:设计模式 组合 结构
panyList; } }

叶子节点Eployee

package com.yydcdut; public class Employee implements Company { private String name; private String position; private int salary; public Employee(String name, String position, int salary) { super(); this.name = name; this.position = position; this.salary = salary; } @Override public String getInfo() { String info = ""; info = "名称:" + name + "\t职位" + position + "\t薪水" + salary; return info; } }

 测试:

package com.yydcdut; public class Main { public static void main(String[] args) { //BOSS ConcreteCompany root = new ConcreteCompany("zhangsan","ceo",10000); //Manager ConcreteCompany developDep = new ConcreteCompany("sisi", "yanha", 8000); ConcreteCompany salesDep = new ConcreteCompany("wangwu", "xiaoshou", 8000); ConcreteCompany financeDep = new ConcreteCompany("maliu", "caiwu", 8000); //employee Employee e1 = new Employee("A", "yanfa", 3000); Employee e2 = new Employee("B", "yanfa", 4000); Employee e3 = new Employee("C", "yanfa", 5000); Employee e4 = new Employee("D", "yanfa", 6000); Employee e5 = new Employee("E", "xiaoshou", 3000); Employee e6 = new Employee("F", "xiaoshou", 4000); Employee e7 = new Employee("G", "xiaoshou", 5000); Employee e8 = new Employee("H", "xiaoshou", 3000); Employee e9 = new Employee("I", "caiwu", 3000); //tree  root.add(developDep); root.add(salesDep); root.add(financeDep); developDep.add(e1); developDep.add(e2); developDep.add(e3); developDep.add(e4); salesDep.add(e5); salesDep.add(e6); salesDep.add(e7); salesDep.add(e8); financeDep.add(e9); System.out.println(root.getInfo()); display(root); } public static void display(ConcreteCompany root) { for(Company c : root.getChild()) { if(c instanceof Employee) { System.out.println(c.getInfo()); } else { System.out.println("\n"+c.getInfo()); display((ConcreteCompany) c); } } } }

结果:

名称:zhangsan    职位ceo    薪水10000

名称:sisi    职位yanha    薪水8000
名称:A    职位yanfa    薪水3000
名称:B    职位yanfa    薪水4000
名称:C    职位yanfa    薪水5000
名称:D    职位yanfa    薪水6000

名称:wangwu    职位xiaoshou    薪水8000
名称:E    职位xiaoshou    薪水3000
名称:F    职位xiaoshou    薪水4000
名称:G    职位xiaoshou    薪水5000
名称:H    职位xiaoshou    薪水3000

名称:maliu    职位caiwu    薪水8000
名称:I    职位caiwu    薪水3000

组合模式和其他相关模式                                             

  1. 装饰模式(Decorator模式)经常与Composite模式一起使用。当装饰和组合一起使用时,它们通常有一个公共的父类。因此装饰必须支持具有 Add、Remove和GetChild 操作的Component接口。
  2. Flyweight模式让你共享组件,但不再能引用他们的父部件。
  3. (迭代器模式)Itertor可用来遍历Composite。
  4. (观察者模式)Visitor将本来应该分布在Composite和Leaf类中的操作和行为局部化。

总结                                                                             

组合模式解耦了客户程序与复杂元素内部结构,从而使客户程序可以向处理简单元素一样来处理复杂元素。

如果你想要创建层次结构,并可以在其中以相同的方式对待所有元素,那么组合模式就是最理想的选择。

我是天王盖地虎的分割线                            

首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇设计模式(一)简单工厂(创建型)(.. 下一篇【模板模式】 Template Pattern

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目