【发布时间】:2015-06-26 14:05:34
【问题描述】:
我有类层次结构:
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而不指定它是手动的还是自动的? -
Andy T - 是的,这是一个很好的观点。 Manual 和 Automated 子类现在将变得抽象。
标签: c++ oop subclassing