我有一个基本的oops问题
我创建了一个名为xyz的抽象类,它包含类Logger,Queue,Encryption的常用功能。课程 记录器,队列,加密源自xyz。我需要进一步创建类ALogger,AQueue& AEncryption。 ALogger会包含 Logger的一些功能。 AQueue& amp; AEncryption。
那么最好的opps方式是什么?
我的解决方案是
Abstract class xyz
{
}
Abstract class Logger : xyz
{
}
Abstract class Queue: xyz
{
}
Abstract class Encryption : xyz
{
}
class ALogger : Logger
{
}
class AQueue: Queue:
{
}
class AEncryption: Encryption
{
}
答案 0 :(得分:1)
老实说,最好的办法是不这样做。这些类似乎没有任何共同点,因此它们没有理由从公共基类继承。即使他们确实有共同点,但这并不是一个普通基类的好理由。
实际上,继承通常不是类共享功能的好方法。我不会说这种情况一直都是正确的,但遗产迟早会破裂。一个类的行为需要与其他类不同,因此我们最终会返回并修改基类。
所有这些类需要共享的xyz
的功能是什么?把它放在一个单独的类中,然后让所有其他类依赖于该类。仅仅因为它们依赖于xyz
中的功能并不意味着它们应该继承它。三个不相关的类可以要求该功能的事实足以表明它属于它自己的类。