OPPS - 类继承

时间:2016-05-11 16:27:28

标签: c# oop

我有一个基本的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 
{
}

1 个答案:

答案 0 :(得分:1)

老实说,最好的办法是不这样做。这些类似乎没有任何共同点,因此它们没有理由从公共基类继承。即使他们确实有共同点,但这并不是一个普通基类的好理由。

实际上,继承通常不是类共享功能的好方法。我不会说这种情况一直都是正确的,但遗产迟早会破裂。一个类的行为需要与其他类不同,因此我们最终会返回并修改基类。

所有这些类需要共享的xyz的功能是什么?把它放在一个单独的类中,然后让所有其他类依赖于该类。仅仅因为它们依赖于xyz中的功能并不意味着它们应该继承它。三个不相关的类可以要求该功能的事实足以表明它属于它自己的类。