我应该创建只在C ++中只有一个函数不同的子类吗?

时间:2014-03-04 01:45:21

标签: c++

我有一个几乎完全实现的基类,除了一个虚函数,默认情况下什么都不做。

现在在我的问题的情况下,我会有许多看起来非常相似的对象,但在调用函数时表现不同。

所以我找到的当前解决方案是,创建几十个派生自同一基类的子类,只覆盖一个公共函数。这确实有效,但看起来很傻。

那里有什么不错的解决方案吗?

2 个答案:

答案 0 :(得分:3)

当你没有给我们任何背景(这些课程做什么?功能名称是什么?)时很难给你提示,但是你是对的 - 乍一看它确实看起来很傻如果你真的有几十个子类。

也许您正在寻找的解决方案是使用函数指针?如果它只是一个类,那么如果你有一个指向某个全局函数的函数指针会更好吗?使用该解决方案,您无需从基类派生任何内容。

您还可以在基类函数中实现所有选项,并使用其他参数调用它,这些参数将暗示要使用的版本。再一次 - 当没有暗示你正在做什么时,很难说什么更好。

答案 1 :(得分:0)

老实说,只要你知道自己在做什么,这对我来说就不傻了。

当然还有其他选择。例如,通过使用Strategy pattern。通过这样做,您将拥有一个上下文类(类似于您的原始基类),以及您想要提供的每种特殊行为的一种策略。在使用时,您将以旧方式实例化适合您需要的子类。现在,您将使用相同的类,并“插入”正确的策略。

它不会减少课程数量,也不是更好的设计。这只是一个不同的设计。了解这种方法的优缺点,了解您自己的问题,并选择一个适合您需求的方法。