目录
装饰器模式:
动态的给一个对象添加一些额外的职责,就增加功能而言,装饰器模式比生成子类更为灵活
主要解决:一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀(到后期越来越难维护)。
何时使用:在不想增加很多子类的情况下扩展类。
优点:装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能。
缺点:
- 会出现更多的代码,更多的类,增加程序复杂性
- 动态装饰时,多层装饰时会更复杂
使用场景: 1、扩展一个类的功能。 2、动态增加功能,动态撤销。
哪些地方用到了装饰器模式?
IO流
Mybatis缓存模块
被装饰者PerpetualCache
LruCache装饰器
部分摘自:https://www.runoob.com/design-pattern/decorator-pattern.html