1. 装饰者模式
装饰者模式是比较常用的模式,比如Spring session、Mybatis缓存中以及JDK的java.io包中都有着广泛的应用。
1.定义
动态的将责任附加到对象身上。若要扩展功能,装饰者提供比继承更弹性的替代方案。
2.优缺点
-
优点:在不影响其他类的前提下增加功能,当不能使用继承的时候可以使用装饰者模式
-
缺点:使用装饰者模式使得小的类变多,甚至出现类爆炸的情况,在调用关系复杂,不易排查错误。
3.类图
4. 用到的设计原则
- 对扩展开放,对修改关闭
- 封装变化
- 面向抽象
- 多用组合少用继承
2. 适配器模式
适配器模式也是一个比较常用的设计模式,他又分为对象适配器模式和类适配器模式。
1.定义:
将一个类的接口,转换为客户期望的另一个接口。适配器让原本不兼容的类可以合作无间。
2.优缺点:
- 优点:增加类的复用性,灵活性和扩展性都很好,符合开闭原则
- 缺点:增加代码复杂性,调用较多,排查比较困难。
3.类图
4. 用到的设计原则
- 对扩展开放,对修改关闭
- 多用组合,少用继承
- 面向抽象
3.两种设计模式的联系与区别
在学习这两种设计模式的时候,感觉他们十分的相似,但是却有不尽相同
1.装饰者模式
表示的是与“责任”相关的,每当用到装饰者模式,就表示有新的行为或责任要加入其中。装饰者可以被包装多次,对用户来说他不知道装饰的对象被装饰了多少次。
2.适配器模式
一定会进行接口的转换,客户也是被解耦的。