Design patterns 使用哪种设计模式来替换c代码中的if条件
如果需要删除新实例的if语句,请建议使用哪种设计模式。请不要提供案件陈述Design patterns 使用哪种设计模式来替换c代码中的if条件,design-patterns,Design Patterns,如果需要删除新实例的if语句,请建议使用哪种设计模式。请不要提供案件陈述 public ITrialBalance GetTrialBalanceReport(string param1, int param2) { if (param2 == 1) return new TrialBalanceReport().GetTrialBalanceLevel2(param1, param2); else ret
public ITrialBalance GetTrialBalanceReport(string param1, int param2)
{
if (param2 == 1)
return new TrialBalanceReport().GetTrialBalanceLevel2(param1, param2);
else
return new TrialBalanceReport().GetTrialBalanceLevel2(param1, param2);
}
如果通过使用多态性消除了其他条件,请感谢。包含所有if-else语句的函数将被基类中的虚函数替换。每个if-else条件都有一个相应的派生类,该派生类相应地实现该虚函数
派生类、基类和函数的参数应该是更有意义的实体,而不仅仅是像param1或param2这样的数字。策略模式通常替换switch或multiple if语句如果这是您的文字代码,只需干燥并完全删除if,因为条件的两个分支都是相同的。模式是用来解决特定问题的。它们不是通用的设计规则。这里有什么问题?为什么要替换
if
语句?您是否正在尝试“选择”要调用的方法?这不应该是TrialBalanceReport的工作吗?顺便说一句,这两个调用都是相同的抱歉,下面是代码,问题是方法中会有许多if语句,需要一些方法基于参数创建类实例::public ITrialBalance GetTrialBalanceReport(string param1,int param2){if(param2==1)返回新的TrialBalanceReport().GetTrialBalanceLevel 1(param1,param2);否则返回新的TrialBalanceReport().GetTrialBalanceLevel 2(param1,param2);}