【发布时间】:2012-07-24 23:19:33
【问题描述】:
我一直在尝试使用装饰器模式来扩展你不想接触的代码的功能,我知道如何实现它,但是我现在不确定你为什么不只是从原始类继承并扩展那样。
我已经读到装饰器模式允许您在运行时添加功能,而继承意味着它在编译时就在那里。
我不明白。
有人可以解释一下,提供示例并解释何时使用装饰器与继承更好。
谢谢
【问题讨论】:
-
继承和扩展方法都是在编译时添加函数
-
可能是一个很好的理解起点是专门介绍装饰器模式的维基百科文章:en.wikipedia.org/wiki/Decorator_pattern
-
@peer 请在答案中解释更多。我看不到装饰器如何让您在运行时做任何事情
-
@Jon:我已经添加了一些示例,以更实际地回答您使用可能有帮助的装饰器所做的事情。我不认为真的存在运行时/编译时间以我会这样描述的方式进行拆分,但是您可以选择将哪个装饰器应用于对象(例如用户选择),然后该对象的行为会有所不同在运行时编译器不知道它不仅仅是原始类型。我不会说它在运行时添加了功能。 :)
标签: c# .net design-patterns inheritance decorator