《设计模式解析》摘录(11)
来源:互联网 发布:办公室软件培训 编辑:程序博客网 时间:2024/05/01 01:33
Decorator 模式
Decorator 模式的工作原理:可以创建始于 Decorator 对象(复杂新功能的对象)终于原对象的一个对象“链”。
每条链都始于一个 Component(ConcreteComponent 或 Decorator)。每个 Decorator 对象后面都跟着另一个 Decorator 对象或原 ConcreteComponent 对象。对象链总是终于一个 ConcreteComponent 对象。
Decorator 模式帮助我们将问题分为两个部分:
1、如何实现提供新功能的对象;
2、如何为每种特殊情况组织对象。
这样能够将 Decorator 对象的实现与决定如何使用 Decorator 对象的对象分离开来,从而提供了内聚性,因为每个 Decorator 对象只用关心自己添加的功能——无需关心自己如何被添加到对象链中。这还使我们能够任意地重排 Decorator 的顺序,无需改变其他的任何代码。
Decorator 模式要求对象链的实例化与使用它的 Client 对象完全分离开。最典型的实现是通过使用工厂对象,根据某些配置信息实例化对象链。
关键特征:
意图:动态地给一个对象添加职责;
问题:要使用的对象将执行所需的基本功能。但是,可能需要为这个对象将添加某些功能,这项附加功能可能发生在对象的基础功能之前或之后;
解决方案:可以无需创建子类,而扩展一个对象的功能;
参与者与协作者:ConcreteComponent 让 Decorator 对象为自己添加功能。有时候用 ConcreteComponent 的派生类提供核心功能,在这种情况下 ConcreteComponent 类就不再是具体的,而是抽象的。Component 类定义了所有这些类所使用的接口。
效果:所添加的功能放在小对象中。好处是可以在 ConcreteComponent 对象的功能之前或之后动态添加功能。虽然装饰对象可以在被装饰对象之前或之后动态添加功能,但对象链总是终于 ConcreteComponent 对象。
实现:创建一个抽象类来表示原类和要添加到这个类的新功能。在装饰类中,将对新功能的调用放在对紧随其后对象的调用之前或之后,以获得正确的顺序。
- 《设计模式解析》摘录(11)
- 《设计模式解析》摘录(1)
- 《设计模式解析》摘录(2)
- 《设计模式解析》摘录(3)
- 《设计模式解析》摘录(4)
- 《设计模式解析》摘录(5)
- 《设计模式解析》摘录(6)
- 《设计模式解析》摘录(7)
- 《设计模式解析》摘录(8)
- 《设计模式解析》摘录(9)
- 《设计模式解析》摘录(10)
- 《设计模式解析》摘录(12)
- 《设计模式解析》摘录(13)
- 《设计模式解析》摘录(14)
- 《设计模式解析》摘录(15)
- 《设计模式解析》摘录(16)
- 《设计模式解析》摘录(17)
- 设计模式解析------笔记,摘录
- Java面试题及答案
- Java常见面试题集
- 接口继承
- SerialPort In .Net Framework
- 学习Java的30个基本概念
- 《设计模式解析》摘录(11)
- 如何通过COM 接口传送C++对象
- Windows汇编集成开发环境MasmEditor
- 多线程计算PI碰到的问题
- 什么程序员最易找工作
- 如何在.net中导入lib库(2006-07-18)
- vb+mysql编程笔记之二
- 刚到这里,请多指点!我们的发展方向是.NET中的C#。
- 网络报告:美国是黑客大本营 中国是最大受害国