我的類層次結構:多個子類層次結構
class AbstractProcess
{
virtual void Do() = 0;
};
class BuildProcess : public AbstractProcess
{
virtual void Do();
};
class UpdateProcess : public AbstractProcess
{
virtual void Do();
};
然而,我現在要介紹的2新的子類作爲一個過程也可以是手動或自動的(4?)。下面看起來是太長篇大論:
class ManualBuildProcess : public BuildProcess
{
virtual void Do();
};
class ManualUpdateProcess : public UpdateProcess
{
virtual void Do();
};
class AutomatedBuildProcess : public BuildProcess
{
virtual void Do();
};
class AutomatedUpdateProcess : public UpdateProcess
{
virtual void Do();
};
如果我要介紹的另外兩種亞型構建/更新或手動/自動處理這隻會變得更糟。
有更好的設計嗎?
C++支持多繼承,因此您可以擁有另一個處理手動工作常用功能的基類,以及一個處理自動工作常用功能的基類。這將意味着更多的類,但它也可能意味着更好的抽象,以及葉類中的更少的代碼。 –
引入手動/自動化過程是否使前面的類變得抽象?我的意思是,你是否仍然想使用不好的'BuildProcess' w/o來指定它是手動還是自動? –
Andy T - 是的,這是一個很好的觀點。手動和自動化子類現在變得抽象。 –