基类与实用类
应该首选哪两个?
有一些方法被A,B和C类调用。
这些方法是否应该封装在D类(A,B和C的基础)中?
要么
如果这些方法被封装在类U和其他类创建中,则它的对象是根据需要使用这些方法。
在什么基础上应该做出决定?
谢谢。
你应该创建一个static
实用程序类。
如果实际上有意义的话,只有使用inheritance – 如果A
, B
和C
实际上是 D
我根据方法的作用做出决定,如果他们正在做特定于A,B和C类的事情,那么他们应该在基类中。 这有助于保持代码清洁,方法是将类相关function隐藏在系统的其他部分之外。 (当然,我假设A,B和C已经从Dinheritance,或者显然是相关的)
如果他们正在使用其他类型的东西,这不是A,B和C所做的事情,那么为了最大化重用的机会,他们应该在实用类中。
如果他们正在使用特定于其他类型的其他类型(例如,漂亮打印日期时间),请考虑为它们设置扩展方法。
除非有明显的关系,否则我会偏离inheritance。 我怀疑你上面的描述并非如此。 我首选的解决方案是:
- 将实用程序类的实例注入 A,B,C
- 让A,B,C实例化适当的实用程序类
注入该类的优点是您可以轻松地提供不同的实现。 这对测试特别有用。 使用静态方法的单身人士或class级出于同样的原因往往会引发问题 – 你不能轻易地覆盖或替换它们。
使用基类如果要根据基类编写一些逻辑 – 那么创建基类是有意义的。 在这种情况下,派生类应该完全可替代您的基类。 不应该有任何切换逻辑来检查派生类型并相应地采取行动。 见Liskov替代原则: http : //en.wikipedia.org/wiki/Liskov_substitution_principle
使用实用程序类某些语言具有不支持多重inheritance的限制。 如果您已经有了一个有意义的基类,那么您需要去实用程序类。 此外,当您使用inheritance时,您正在创建从dervied类到基类之间的紧密耦合。
如果派生类自然可以替代它的基类,我会选择基类。 如果目的只是在类之间共享一些可重用的代码,那么使用实用程序类更有意义。
上述就是C#学习教程:基类与实用类分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1027670.html