设计模式之装饰者模式
可以动态地将附加职责附加给对象。装饰器为子类化的方式提供了灵活的替代扩展功能。比如做梦梦到了交个女朋友,她的发型,发色,穿着都是根据场景做梦梦到的时候附加上去的。这时,就应该对“女朋友”这个对象实行装饰者模式来动态的、灵活的拓展。
应用场景
- 动态且透明地向各个对象添加职责的同时不影响其他对象。
- 灵活的可撤回职责。
- 有时候需要很多子类来用于支持每种功能的组合,这样每次增加一种功能拓展就要增加很多子类的情况。显然这样是不符合要求的。所以遇到这种多功能拓展时,需要使用装饰者模式来解决。
装饰者模式结构
装饰者模式可以大致分为四种结构(本例子中的抽象构件和抽象装饰类为一个)抽象构件,具体构件,抽象装饰类,实际装饰类。
代码
第一部分:抽象构件与抽象装饰类
1 | // 制造一个假想的“女朋友” |
第二部分:实现组件
1 | // 基本的功能实现 |
第三部分:附加装饰类
1 | // 工作中的女孩 穿正装 |
最后客户端的调用:
1 |
|