组合模式

简介: 定义:将对象组合成树形结构以表示“部分整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。(为具有上下级关系两类 提供共同的接口,创建了属性结构)目的:1.使两个对象拥有属性结构。 2.使上下级的类拥有相同的接口。优点:1.屏蔽了类的不一致,客户可以通过相同的方式调用不同的层级。 2.对客户实现了封装 3.提供了统一的接口缺点:1.其叶子和树枝的声明都是实现类,而不是接口,违反了依赖倒转原则 2. 使得设计更加复杂。客户端需要花更多时间理清类之间的层次关系


定义:将对象组合成树形结构以表示“部分整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。(为具有上下级关系两类 提供共同的接口,创建了属性结构)

目的:1.使两个对象拥有属性结构。

          2.使上下级的类拥有相同的接口。

优点:1.屏蔽了类的不一致,客户可以通过相同的方式调用不同的层级。

          2.对客户实现了封装

          3.提供了统一的接口

缺点:1.其叶子和树枝的声明都是实现类,而不是接口,违反了依赖倒转原则

          2. 使得设计更加复杂。客户端需要花更多时间理清类之间的层次关系

类图:

image.png

代码:

component(上级关系类的共同抽象类)

1. public abstract class ComponentPerson {
2. 
3. protected String name;
4. 
5. public ComponentPerson (String name) {
6. this.name = name;
7.     }
8. 
9. //进行招聘
10. public abstract void recruitPerson();
11. 
12. //解雇
13. public abstract void firePerson();
14. 
15. //工作
16. public abstract void work(int depth);
17. 
18. }

left(子类 员工类)

1. public class Leaf extends ComponentPerson {
2. 
3. public Leaf(String name) {
4. super(name);
5.     }
6. 
7. @Override
8. public void recruitPerson() {
9. //不能招聘
10. throw new Exception();
11.     }
12. 
13. @Override
14. public void firePerson() {
15. //不能解雇
16. throw new Exception();
17.     }
18. 
19. @Override
20. public void work() {      
21. System.out.println("努力当员工");
22.     }
23. 
24. }

Composite(父类 老板类)

1. public class Composite extends ComponentPerson {
2. 
3. public Composite(String name) {
4. super(name);
5.     }
6. 
7. 
8. @Override
9. public void recruitPerson() {
10. System.out.println("小伙子我看好你");  
11.     }
12. 
13. @Override
14. public void firePerson() {
15. System.out.println("对不起 你被开除了");  
16.     }
17. 
18. @Override
19. public void work() {      
20. System.out.println("努力当好老板");                
21.     }
22. 
23. }


相关文章
|
Android开发 容器 安全
Android设计模式系列-组合模式
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/52592552 Android中对组合模式的应用,可谓是泛滥成粥,随处可见,那就是View和ViewGroup类的使用。
738 0
|
安全 C++ 容器
C++组合模式
简述 组合模式(Composite Pattern)组合多个对象形成树形结构以表示具有“整体-部分”关系的层次结构。组合模式对单个对象(即:叶子构件)和组合对象(即:容器构件)的使用具有一致性,组合模式又被称为“整体-部分”(Part-Whole)模式,属于对象结构型模式。 简述 模式结构 透明组合模式和安全组合模式 优缺点 使用场景 案例分析 代码实现 透明组
1674 0
|
设计模式 Java 容器
组合模式
组合模式
|
设计模式
我学会了,组合模式
组合模式属于结构型模式,这个类型的设计模式总结出了 类、对象组合后的经典结构,将类、对象的结构和使用解耦了,花式的去借用对象。
117 0
我学会了,组合模式
|
前端开发
关于组合模式我所知道的
关于组合模式我所知道的
64 0
|
4月前
|
设计模式 缓存 算法
C#一分钟浅谈:组合模式与外观模式
【10月更文挑战第15天】本文介绍了面向对象设计模式中的组合模式和外观模式。组合模式通过树形结构表示“部分-整体”的层次关系,适用于文件系统、图形界面等场景;外观模式提供统一接口简化复杂系统的使用,适用于视频播放器等多模块系统。文章详细解释了这两种模式的基本概念、应用场景、实现方式及常见问题和解决方法,帮助读者更好地理解和应用。
57 9
|
存储
享元模式与组合模式(1)
享元模式与组合模式(1)
165 0
享元模式与组合模式(1)
|
存储
享元模式与组合模式(2)
享元模式与组合模式(2)
203 0
享元模式与组合模式(2)
|
存储 设计模式 Java
享元模式与组合模式(3)
享元模式与组合模式(3)
157 0
享元模式与组合模式(3)
|
设计模式 存储 人工智能
享元模式与组合模式(4)
享元模式与组合模式(4)
117 0
享元模式与组合模式(4)

热门文章

最新文章