簡體   English   中英

具有多重繼承的工廠模式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM