Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 使用哪种设计模式来替换c代码中的if条件_Design Patterns - Fatal编程技术网

Design patterns 使用哪种设计模式来替换c代码中的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

如果需要删除新实例的if语句,请建议使用哪种设计模式。请不要提供案件陈述

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);}