我有个基本的问题
我已经创建了一个名为xyz的抽象类,它包含了类Logger、Queue、Encryption的通用功能。类Logger、Queue、Encryption都是从xyz派生的。我需要进一步创建类ALogger、AQueue和AEncryption。ALogger将包含Logger的一些功能。AQueue & AEncryption也是如此。
那么,最好的选择是什么呢?
我的解决办法是
Abstract class xyz
{
}
Abstract class Logger : xyz
{
}
Abstract class Queue: xyz
{
}
Abstract class Encryption : xyz
{
}
class ALogger : Logger
{
}
class AQueue: Queue:
{
}
class AEncryption: Encryption
{
}发布于 2016-05-11 17:00:27
诚实地说,最好的方法就是不要这样做。这些类似乎没有任何共同点,因此它们没有理由继承公共基类。即使他们确实有共同点,这也不是普通基类的一个很好的理由。
在实践中,继承通常不是类共享功能的好方法。我不会说这是普遍正确的,但迟早继承会崩溃。一个类需要与其他类的行为不同,因此我们返回并修改一个基类。
所有这些类都需要共享的xyz功能是什么?把它放在一个单独的类中,然后让所有其他类依赖于该类。仅仅因为它们依赖于xyz中的功能,这并不意味着它们应该继承它。三个不相关的类可以要求该功能,这一事实足以表明它属于自己的类。
https://stackoverflow.com/questions/37168388
复制相似问题