代码之家  ›  专栏  ›  技术社区  ›  Hemanshu Bhojak

装饰器和虚拟方法

  •  2
  • Hemanshu Bhojak  · 技术社区  · 15 年前

    decorator设计模式是扩展类功能的非常好的解决方案。例如,如果我想要对现有类方法使用前处理和后处理方法,我可以创建一个decorator并重写基类中的现有方法,然后分别调用我的前处理和后处理方法。

    我的问题是,在应用程序设计过程中很少会出现上述要求。我不能将我创建的所有方法都标记为虚拟的,以便装饰器可以重写它们。因此,我将不得不求助于方法隐藏。

    有没有更好的方法来设计我的类,以便在我想重写任何方法的情况下,它可以以最好的方式完成。

    2 回复  |  直到 15 年前
        1
  •  1
  •   ThorHalvor    15 年前

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

    如果使用f.ex reflector编译并打开dll,您将看到pre-and-post操作是在运行时添加的。

    -也可以使用xml配置添加此类行为

        2
  •  0
  •   Jim Arnold    15 年前

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