装饰模式

解释

装饰模式(Decorator),又名包装模式(Wrapper),动态地给一个对象添加一些额外的职责。

UML图

装饰模式_第1张图片
装饰者模式.gif

抽象构件(Component)角色:给出一个抽象接口,以规范准备接受附加责任的对象。
具体构件(Concrete Component)角色:定义一个将要接收附加责任的类。
装饰(Decorator)角色:持有一个构件(Component)对象的实例,并定义一个与抽象构件接口一致的接口。
具体装饰(Concrete Decorator)角色:负责给构件对象“贴上”附加的责任。

工作原理

装饰模式的链式引用关系使装饰模式看上去像是一个LinkedList,如下图所示。

装饰者链.jpg

优缺点

优点:
(1)通过组合而并非继承的方式,实现了动态扩展对象的功能的能力;
(2)有效避免了使用继承的方式扩展对象而带来的灵活性差,子类无限扩张的问题。
缺点:
(1)装饰链不能过长,否则会影响效率;
(2)会提高程序的复杂性,增加系统维护难度。

应用场景

(1)想透明并且动态地给对象增加新的职责的时候;
(2)给对象增加的职能,在未来存在增加或减少可能;
(3)用继承扩展功能不太现实的情况下,应该考虑用组合的方式。

你可能感兴趣的:(装饰模式)