设计模式:Decorator
目录
[显示]
1.摘要
Decorator模式维护一个单路的嵌套关系,利用这种关系可以实现函数的递归调用。这种递归方式可以动态地给一个对象添加一些额外的职责,就扩展功能而言, 它比生成子类方式更为灵活。
2. 针对问题
有时我们希望给某个类增加一些功能。这时有两个选择:
1、继承这个类并实现一个派生类,在派生类中编写新的功能逻辑,这样做的主要问题是一个功能就需要对应一个派生类,多层继承时类的数量会成倍增长。
2、使用对象的组合,将新的功能委托给别的对象实现,并提供一致的调用接口。Decorator模式便是这种思路的一个实现方式。
3. 介绍
动态地给一个对象添加一些额外的职责。就扩展功能而言, 它比生成子类方式更为灵活。
4. 实现
Decorator模式的静态图如下:
Decorator模式维护一个单路的层级关系,Decorator与Component需要有共同的接口。可以认为是一个新的Decorator“包裹”了旧的对象,在将调用转发给旧对象后实现Decorator自己的逻辑功能,如下图:
可以看出Decorator模式与Composite模式的实现方式非常相似,这两种模式的主要区别是Decorator模式只需要维护一个component节点,这也体现了这两种模式的区别:Composite模式侧重于对象结构的维护,Decorator模式侧重于转发请求时增加其他功能。
5. 特点
1、Decorator模式通过将原有类型的逻辑分离到共同接口的类型中,实现了动态增加对象功能。
2、被装饰的类型和Decorator类型在类层次上是平级的,也就是说,被装饰的类型的特有操作不能被装饰。
6. 相关文章
7. 参考文章
- 《设计模式_可复用面向对象软件的基础》,
本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可,转载请注明作者及原网址。
抱歉,暂停评论。