[英]Factory Pattern with 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
這是好設計還是壞設計? 如果設計不好,我該如何改進? 還有什么可以適用於這種情況的模式嗎? 歡迎任何專家的意見。 提前致謝。
三個類的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 {
[...]
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.