具有多重继承的工厂模式

时间:2018-02-16 10:41:19

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

在这个问题中,我有三个纯虚拟类,让我们将它们命名为 A,B,C 。它们中的每一个都提供不同的功能集。我有另一个纯虚拟类,我将其称为 CommonInterface ,它不会引入任何新功能,但会继承A,B和C,以便通过单个接口访问它们,如下所示:

class CommonInterface : public virtual A, public virtual B, public virtual C

这些接口由标准文档定义,不受更改。它们被定义为工厂设计模式,因此任何人都可以根据需要实现CommonInterface的功能。

我的角色是为这个CommonInterface提供一个内置的实现,这样人们可以使用我的实现,以防接口的内置实现对他们来说足够好。我想很好地设计内置实现,但我不太确定如何将工厂模式应用于多个继承情况。我当前的实现将每个基本接口实现为

class BuiltinA : public A
class BuiltinB : public B
class BuiltinC : public C

然后实现如下所示的通用接口:

class BuiltinImplementation : public virtual CommonInterface, public BuiltinA, public BuiltinB, public BuiltinC

这是一个好的或坏的设计?如果这是一个糟糕的设计,我该如何改进它?我也可以申请这种情况吗?欢迎任何专家意见。提前谢谢。

1 个答案:

答案 0 :(得分:0)

三个类的CommonInterface可以让您访问方法,这些方法在所有三个类和隐藏类特定接口之间完全相同。您对CommonInterface的实现使调用者可以访问所有特定于类的方法。我认为这已经是一个糟糕的设计。

我建议将继承更改为:

class CommonInterface {
   public:
      virtual void common_method(<args>) = 0;
};

class A : public CommonInterface {
   public:
      virtual void a_specific_method(<args>) = 0;
};

class B : public CommonInterface {
   public:
      virtual void b_specific_method(<args>) = 0;
};

你对内置的实现是:

class Builtin_A : public A {
    [...]
};

class Builtin_B : public B {
    [...]
};
相关问题