WEB开发网
开发学院软件开发C语言 C# Design Patterns (3) - Decorator 阅读

C# Design Patterns (3) - Decorator

 2009-06-29 07:07:51 来源:WEB开发网   
核心提示: Decorator Pattern 适用的情景:你拥有一个已存在的组件类,却无法继承它 (subclassing),C# Design Patterns (3) - Decorator(7), 能够动态地为对象添加职责 (添加状态和行为), 改变类中的成员和行为, 「被装饰者」并不需要知道

--------------------------------------------------------

Decorator Pattern 适用的情景: 

你拥有一个已存在的组件类,却无法继承它 (subclassing)。

能够动态地为对象添加职责 (添加状态和行为)。

改变类中的成员和行为,但不影响其他对象。

希望能便于职责的撤消。

不想用「继承」来扩展行为。其中一种原因是避免当一些功能要交叉搭配引用时,单独用「继承」来设计会产生太多的子类、太复杂的类图结构 [1], [10];另一种考量可能是因为类的定义被隐藏,或类的定义不能用于生成子类。

Decorator Pattern 的优点:

可避免单独使用「继承」时,在扩展时不够弹性,且可能衍生过多的子类。

扩展时不需要修改既有的代码。

可在执行时期,动态地添加新行为 (职责)。

Decorator Pattern 的缺点:

可能会在程序中出现许多的小型类,亦即需要编写很多 ConcreteDecorator 类 (具体装饰者)。

若过度使用 Decorator 模式,会让程序逻辑变得很复杂。

别人较不易理解设计方式及代码,排查故障、追踪和调试也比较困难。

Decorator Pattern 的其他特性:

每个要装饰的功能,都放在单独的类中。

我们可以用无数个装饰者,去包装一个组件。

「装饰者」可以在「被装饰者」前面或后面,添加自己的行为,甚至将「被装饰者」的行为整个取代掉,以达到特定的目的。

「被装饰者」并不需要知道它已经被「装饰」过了,亦即 Component 类 (对象) 并不需要知道 Decorator 类 (对象) 的存在,且 Decorator 也仅仅认识 Component。

--------------------------------------------------------

上一页  2 3 4 5 6 7 8 9 10  下一页

Tags:Design Patterns Decorator

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接