基础类和实用类应该优先选择哪两个?类A、B、C调用了一些方法,这些方法是否应该封装在类D(A、B、C的基类)中?或者如果这些方法被封装在U类和其他类创建中,它的目的是根据需要使用这些方法。应该在什么基础上做出决定?谢谢。您应该创建一个静态实用程序类。只有在真正有意义的情况下才使用继承——如果A、B和C实际上是D我根据方法的作用做出决定,如果它们正在做特定于类A、B和C的事情,那么它们应该在基础中班级。这有助于通过对系统的其余部分隐藏与类相关的功能来保持代码整洁。(当然,我假设A、B和C已经来自Dinheritance,或者明显相关)如果他们使用其他类型的东西,这不是A、B和C所做的,那么最大化重用的机会,他们应该在实用类中。如果他们使用特定于其他类型的其他类型(例如,漂亮的打印日期时间),请考虑为他们设置扩展方法。除非有明显的关系,否则我会远离继承。我怀疑您上面的描述并非如此。我的首选解决方案是:将实用程序类的实例注入A、B、C让A、B、C实例化适当的实用程序类注入此类的优点是您可以轻松提供不同的实现。这对于测试特别有用。出于同样的原因,单例或具有静态方法的类往往会导致问题——您不能轻易地覆盖或替换它们。使用基类如果你想写一些基于基类的逻辑——那么创建基类是有意义的。在这种情况下,派生类应该可以完全替代您的基类。不应该有任何切换逻辑来检查派生类型并采取相应的行动。参见LiskovSubstitutionPrinciple:http://en.wikipedia.org/wiki/Liskov_substitution_principle使用实用类有些语言有不支持多重继承的限制。如果您已经有一个有意义的基类,那么您需要使用实用程序类。此外,当您使用继承时,您正在创建从派生类到基类的紧密耦合。如果一个派生类可以很自然地替代它的基类,我会选择基类。如果目的只是在类之间共享一些可重用的代码,那么使用实用类更有意义。以上就是C#学习教程分享的全部内容:基础课和实战课。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
