我有一个派生子类继承自的基本类,它具有在所有派生类中应该相同的基本功能:
class Basic {
public:
Run() {
int input = something->getsomething();
switch(input)
{
/* Basic functionality */
case 1:
doA();
break;
case 2:
doB();
break;
case 5:
Foo();
break;
}
}
};
现在,基于派生类,我想向 switch 中“添加”更多 case 语句。我在这里有什么选择?我可以声明虚函数,并且只在要使用它们的派生类中定义它们:
class Basic {
protected:
virtual void DoSomethingElse();
public:
Run() {
int input = something->getsomething();
switch(input)
{
/* Basic functionality */
...
case 6:
DoSomethingElse();
}
}
};
class Derived : public Basic {
protected:
void DoSomethingElse() { ... }
}
但这意味着当更改任何派生类中的函数时,我必须编辑我的基类以反映这些更改。
是否有专门针对此类问题的设计模式?我购买了许多关于设计模式的书籍,但我正在“按需”研究它们,所以我不知道是否有我正在寻找的这种模式。