非常长的基础类的设计模式

时间:2019-06-20 10:05:37

标签: c++ inheritance design-patterns multiple-inheritance

如果我有8个长方法将在4个子类之间共享(并非所有子类都将使用所有方法),则某些将仅使用2个其他方法,以此类推,等等。

如果我创建一个基类,并且4个子类中的每一个都继承自该基类,那么问题就解决了,但我试图避免使用很长的基类。

我可以尝试根据基础类的使用方式将其分为更多类,然后使用多重继承,这是另一种解决方案。

还有其他解决方案吗?最佳是什么?

1 个答案:

答案 0 :(得分:4)

从提出问题的方式出发,首先要认真考虑的是您是否根本需要上课。

初学者经常会遇到的一个陷阱是,他们认为一切都必须放在课堂上。虽然确实有些语言需要这样做,但这是一个选择,但不一定是必需的,甚至在C ++中也可能不是一个好主意。

除非类之间存在实际的“是”关系(例如,基类代表Dog,派生类代表狗的类型),否则最好不要使用继承。

[在某些情况下,即使没有“ is-a”关系,也适合使用类层次结构-但是,如果您的情况是这样,则几乎可以肯定不需要提出问题。]

相反,我只用适当的参数和返回类型定义八个非成员函数(即不是类的成员)。参数和返回值(如果有的话)可用于将信息传递给该函数或将信息传递回。

然后,这四个类根据需要调用函数。但是,根据您的描述,甚至不清楚您是否需要这四个类。可能所需要做的就是通过调用“ 8个长方法”实现的一组功能。如果需要防止其他代码调用这些“ 8个长方法”,则可以在源文件本地实现。

通常来说,旨在使您的设计尽可能简单。如果在没有类层次结构或根本不定义任何类的情况下可以做到这一点,则不要使用类。