在这种情况下,继承或创建静态方法更好吗?

时间:2013-10-25 06:30:40

标签: c# .net oop

我有一个Common class

Public class Trans
{

//Access modifiers like the following 20 are there and 20 methods

 protected internal string TopVenueCd
 {
            get { return this.Ticket.GetValue("venueCd", "").TopOne().GetStringValue(); }
 }

}

我继承这个课程到我需要的地方。 但是在我继承的所有类中,我都不需要所有的方法。

因此,我可以将其创建为静态类,并在需要的地方访问它。

哪个更明智?

请说明理由,因为我在表现中没有深入了解oops。 感谢所有回复..

更新

我的目标是在一个班级中单独分离一个与收集相关的流程。 (我使用的是mongoDb)一个重要的集合,它被大量使用,它是一个带有嵌套文档的大集合。

模式仍未修复和冻结。仍在努力寻求更好的解决方案。

因此,如果我在一个类中单独对该特定Collection进行逻辑操作,如果我改变了架构,我只能改变这个类。这就是意图。

因为我是C#的初学者,所以出现了这个问题..

如何在最佳实践中做好这种隔离?

2 个答案:

答案 0 :(得分:2)

继承被滥用为“复制到我班级的东西” - 特征。它应该用于真正的继承情况(is-a-relation)。

如果静态方法也能正常工作,那么明确地使用它。使用扩展方法可以轻松找到静态方法。

为什么?

  • 因为继承是更高的耦合。您将来不能通过使用接口和注入服务来轻松解耦它。
  • 虽然您可以从许多帮助程序类访问静态方法,但您只能有一个基类。如果您将来需要更多东西,您的基类将变得太大。因为你总是继承所有的东西,所以你的所有课都变得太大了。
  • 如果将来需要基类进行实际继承,则不能再为您的类提供另一个基类。

因此,如果有疑问,根本不使用继承。很少有很好的继承应用程序。

答案 1 :(得分:1)

如果您在不需要所有方法时需要继承类,可能会出现设计问题。

可能是你的基类是God object,它有太多的责任,或者你把一些非必要的功能集中到一个共同的基础上,这违反了{{ 3}}