在我的应用程序中,我必须在许多方法中基于变量值执行许多任务(m_iIndex)。 为了实现它,我使用开关case语句中的大多数我的方法用更优雅的代码重构多个switch语句
对于前:
MathMethod()
{
switch(m_iIndex)
{
case 0 : CallAddition(); break;
case 1 : CallSubtraction(); break;
case 2 : CallMultiplication(); break;
case 3 : CallDivision(); break;
}
}
StrangeMethod()
{
switch(m_iIndex)
{
case 0 : CallStrange(10,"John"); break;
case 1 : CallStrange(20,"Paul"); break;
case 2 : CallStrange(30,"Kurt"); break;
case 3 : CallStrange(40,"Mark"); break;
}
}
这持续一段10种方法。我想知道是否有一种方法可以通过减少我所有方法中的switch case语句来使代码更加优雅和简短。
感谢您的建议。该场景是...基于我的UI类中的菜单项选择,我使用选定的索引值来决定调用不同的方法。在我的情况下,子类化是不是引入了太多的开销? – 2011-05-31 10:36:14
我不知道。这取决于你自己决定。性能开销不是问题。但是,也许它是在像你这样简单的情况下完成工程。但我绝对不会像你用开关盒那样做。您可以为每个索引创建一个类,即一个用于1,一个用于两个,每个用'MathMethod'和一个'StrangeMethod',另一个用于其他10种方法。像这样,你只有4班而不是4 * 12 = 48班。 – 2011-05-31 10:40:46
对不起,我没有得到你推断48班的部分。在我的情况下,从case语句中调用的所有其他方法都驻留在同一个类中。正如你已经指出的那样,这可能是一个非常简单的案例,如我的工程 – 2011-05-31 10:47:51