在这个问题中,我有三个纯虚拟类,让我们将它们命名为 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
这是一个好的或坏的设计?如果这是一个糟糕的设计,我该如何改进它?我也可以申请这种情况吗?欢迎任何专家意见。提前谢谢。
答案 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 {
[...]
};