装饰器设计模式(Decorator Pattern)
描述: 装饰器设计模式就是给对象动态的添加职责,行为的,它是用来代替继承的。相比于继承它更显得灵活。
核心思想: 一般情况下当我们要扩展一个类的时候会使用继承,但这不是很安全,随着功能的增加子类会爆炸式的增长。
装饰器设计模式的优点: 装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能
装饰器设计模式的缺点: 多层装饰比较复杂。
装饰器设计模式的使用场景:
- 扩展一个类的功能。
- 动态增加功能,动态撤销
示例:
- 动物的抽象接口
1 | public interface Animal { |
- 猫实现动物接口
1 | public class Cat implements Animal { |
- 装饰器的抽象类
1 | public abstract class CatDecoractor implements Animal { |
- 现在给猫扩展一个喝水的方法
1 | public class CatDecoractorImpl extends CatDecoractor{ |
- 调用
1 | public static void main(String[] args) { |
附图: