【每天一个java设计模式(十二)】 - 组合模式

x33g5p2x  于2021-12-23 转载在 Java  
字(1.9k)|赞(0)|评价(0)|浏览(355)

组合模式,又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。

这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。

我们通过下面的实例来演示组合模式的用法。

组合模式的实现:
假设现在有一个学校,学校中校长管理一些老师,老师管理一些学生,我们通过实例演示了这个学校中人员的层次结构。

  1. 创建一个Person类
  1. //表示一个人
  2. public class Person {
  3. private String type; //职位
  4. private String name; //姓名
  5. private List<Person> person_list; //管理的人员
  6. public Person(String type, String name) {
  7. this.type = type;
  8. this.name = name;
  9. person_list = new ArrayList<>();
  10. }
  11. public void add(Person person){
  12. person_list.add(person);
  13. }
  14. public void remove(Person person){
  15. person_list.remove(person);
  16. }
  17. public List<Person> getPerson_list(){
  18. return person_list;
  19. }
  20. @Override
  21. public String toString() {
  22. return "Person{" +
  23. "type='" + type + '\'' +
  24. ", name='" + name + '\'' +
  25. '}';
  26. }
  27. }
  1. 实例来演示组合模式
  1. public class CompositeMain {
  2. public static void main(String[] args) {
  3. Person master = new Person("校长","王校长");
  4. Person teacher1 = new Person("老师","张老师");
  5. Person teacher2 = new Person("老师","李老师");
  6. Person student1 = new Person("学生","学生1");
  7. Person student2 = new Person("学生","学生2");
  8. Person student3 = new Person("学生","学生3");
  9. master.add(teacher1);
  10. master.add(teacher2);
  11. teacher1.add(student1);
  12. teacher1.add(student2);
  13. teacher1.add(student3);
  14. teacher2.add(student1);
  15. teacher2.add(student2);
  16. teacher2.add(student3);
  17. System.out.println(master);
  18. for(Person leadPerson:master.getPerson_list()){
  19. System.out.println(leadPerson);
  20. for(Person student:leadPerson.getPerson_list()){
  21. System.out.println(student);
  22. }
  23. }
  24. }
  25. }

  • 什么是设计模式:【每天一个java设计模式(零)】 - 设计模式基本概念及七大设计原则
  • 工厂模式:【每天一个java设计模式(一)】 - 工厂模式
  • 抽象工厂模式: 【每天一个java设计模式(二)】 - 抽象工厂模式
  • 单例模式:【每天一个java设计模式(三)】 - 单例模式
  • 原型模式:【每天一个java设计模式(四)】 - 原型模式
  • 建造者模式: 【每天一个java设计模式(五)】 - 建造者模式
  • 适配器模式 : 【每天一个java设计模式(六)】 - 适配器模式
  • 代理模式: 【每天一个java设计模式(七)】 - 代理模式模式
  • 桥接模式:【每天一个java设计模式(八)】 - 桥接模式
  • 装饰器模式:【每天一个java设计模式(九)】 - 装饰器模式
  • 外观模式:【每天一个java设计模式(十)】 - 外观模式
  • 享元模式:【每天一个java设计模式(十一)】 - 享元模式

下一节:

相关文章

最新文章

更多