设计模式-装饰器

190 阅读1分钟

动态的给对象增加一些新的行为。

使用继承虽然也可以实现,但是比较臃肿,没有装饰模式灵活。而且降低了类与类的直接的关系。

模式结构

  • Component: 抽象构建
  • ConcreteComponent: 具体的抽象构建
  • Decorator:抽象装饰类(增加一层这个,这样具体的装饰者内部每次就不用在 定义 抽象对象变量,直接super(),初始父类对象就行了)
  • ConcreteDecorator: 具体的装饰者

优缺点

  • 优点

0、装饰者和被装饰者 可以独立扩展,互不影响。

0、动态的扩展一个类的功能

  • 缺点

多层装饰比较复杂

使用场景

  • 在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。
  • 当不能使用继承或者 使用继承难为维护是可以是使用 【装饰器】(1-使用final,2-使用继承会导致子类的数量爆炸行增长)

其他

  • 扩展对象的功能为什么不使用继承

参考链接1:blog.csdn.net/qq_27093465…

参考链接2 www.cnblogs.com/JMLiu/p/808…

  • 代码

装饰器-代码链接