【设计模式】什么是装饰器模式?

简介

装饰器模式属于结构型模式,在不改变原有对象的基础上将功能附加到对象相比继承可以更加灵活地扩展原有对象的功能。简单来说创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。

装饰器模式适合的场景:在不想增加很多子类的前提下扩展一个类的功能。


使用

1、创建shape接口:

【设计模式】什么是装饰器模式?

2、创建接口的实现类,他就是被装饰的类:

【设计模式】什么是装饰器模式?

3、 装饰类的抽象类,同样实现了shape接口:

【设计模式】什么是装饰器模式?

4、 装饰类的具体实现,用来增强circle的功能:

【设计模式】什么是装饰器模式?

5、调用装饰类:

【设计模式】什么是装饰器模式?

 这样,draw的方法签名没有变,但是功能增强了。


装饰器模式和动态代理的区别?

装饰器模式的关注点在于给对象动态添加方法,而动态代理更注重对象的访问控制。动态代理通常会在代理类中创建被代理对象的实例,而装饰器模式会将被装饰者作为构造方法的参数。