装饰器和虚拟方法

时间:2009-03-23 06:42:32

标签: c# design-patterns ooad

装饰器设计模式是扩展类功能的非常好的解决方案。例如,如果我想在现有的类方法上使用前处理和后处理方法,我可以创建一个装饰器并覆盖基类中的现有方法,并分别调用我的前处理和后处理方法。

我的问题是,在申请设计期间很少出现上述要求。我无法将我创建的所有方法标记为虚拟,以便装饰器可以覆盖它们。因此,我将不得不求助于隐藏方法。

是否有更好的方法来设计我的类,以便在我想要覆盖任何方法的情况下,可以以最佳方式完成。

2 个答案:

答案 0 :(得分:1)

你考虑过使用方面(AOP)吗? - 在您撰写评论后添加:  您可以查看log4postsharp项目,看看他们如何使用该方法的属性。 Log4PostSharp

如果使用f.ex Reflector编译并打开dll,您将看到操作前添加了操作前和后操作。

- 使用xml-configs

也可以添加这种行为

答案 1 :(得分:0)

通常当我装饰一个类时,我是通过组合而不是继承来实现的。这样你就不需要覆盖任何东西了。

相关问题