1

我有一个 C++ 架构,其中有许多类都派生自两个不同的基类。所有派生类都以略有不同的方式覆盖/实现基类中的相同方法。为了显示:

class B1 {
public:
    // method_1 is pure virtual.
    virtual void method_1() = 0;
};

class B2 {
public:
    // method_2 is not pure virtual.
    virtual void method_2();
};

class D1 : public B1, public B2 {
public:
    virtual void method_1() { // Does something... }
    virtual void method_2() { // Does something... }
};

class D2 : public B1, public B2 {
public:
    virtual void method_1() { // Does something slightly different... }
    virtual void method_2() { // Does something slightly different... }
};

一切正常,但由于有大约 20 个派生类,感觉应该有一种方法来改进这个设计,这样我就必须编写更少的代码,特别是因为派生类在他们正在做的事情上通常非常相似. 任何人都可以为我提供任何关于未来的指示吗?

4

2 回答 2

1

如果不知道您的实现领域(即的程序试图建模的具体内容),几乎不可能分析或建议更好的设计。在这里做一个非常广泛的陈述,很少有使用一般形式的多重继承(即除了通过接口继承行为)是合理的情况。同样,这是一个笼统的声明,仍然有一些例外,具体取决于域。

于 2013-10-22T14:47:55.060 回答
1

看看策略设计模式。基本上使方法 1 和 2 包装由类 D 的唯一指针拥有的 B1 和 B2 类。然后您可以在 D 的构造函数中传递 B1 和 B2 实例。

于 2013-10-22T14:56:25.407 回答