【设计模式】什么是装饰器模式?
简介
装饰器模式属于结构型模式,在不改变原有对象的基础上将功能附加到对象,相比继承可以更加灵活地扩展原有对象的功能。简单来说创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。
装饰器模式适合的场景:在不想增加很多子类的前提下扩展一个类的功能。
使用
1、创建shape接口:
2、创建接口的实现类,他就是被装饰的类:
3、 装饰类的抽象类,同样实现了shape接口:
4、 装饰类的具体实现,用来增强circle的功能:
5、调用装饰类:
这样,draw的方法签名没有变,但是功能增强了。
装饰器模式和动态代理的区别?
装饰器模式的关注点在于给对象动态添加方法,而动态代理更注重对象的访问控制。动态代理通常会在代理类中创建被代理对象的实例,而装饰器模式会将被装饰者作为构造方法的参数。