Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/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

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
Oop 哪种设计模式用于复杂函数的拆分?_Oop_Design Patterns - Fatal编程技术网

Oop 哪种设计模式用于复杂函数的拆分?

Oop 哪种设计模式用于复杂函数的拆分?,oop,design-patterns,Oop,Design Patterns,我很难确定在这种情况下应该使用哪种设计模式。我目前有一个函数,它接受一个枚举,并使用类本身的变量进行计算。有多种方程/方法可使用不同参数获得计算变量。目前,我有一些东西使用父类变量并接受一个枚举来确定它是哪种情况。我想拆分函数,让它成为用户必须向函数传递变量/拆分函数而不依赖父类变量的地方。例如: public double CalculateVariable(double argument, VariableType varType) { var returne

我很难确定在这种情况下应该使用哪种设计模式。我目前有一个函数,它接受一个枚举,并使用类本身的变量进行计算。有多种方程/方法可使用不同参数获得计算变量。目前,我有一些东西使用父类变量并接受一个枚举来确定它是哪种情况。我想拆分函数,让它成为用户必须向函数传递变量/拆分函数而不依赖父类变量的地方。例如:

    public double CalculateVariable(double argument, VariableType varType)
    {
        var returnedVariable = 0.0;
        switch (varType)
        {
            case 1:
                //Use Equation 1 using variables (a,b,c,d) from parent class + argument
                break;
            case 2:
                //Use Equation 2 using variables (a,c,f,g) from parent class + argument
                break;
            case 3:
                //Use Equation 3 using variables (a,b,c,f) from parent class + argument
                break;
        }

        return returnedVariable;
    }

使用某种生成器模式来实现我分解此函数的目标是合适的还是最好使用5种不同的函数,即:
CalculateVariableUsingXMethod
CalculateVariableUsingYMethod
CalculateVariableUsingZMethod
。我会使用哪种设计模式?

我建议您不要遵从“权威”,而是依靠您自己的最佳判断

我决定问两个问题:

1) 在我忘记我在这里做过什么的将来,什么是最容易遵循的


2) 在我或其他人学到更多之后,这一点在未来可能会发生什么变化?如何使这些更改变得容易?

1)这些方程式是简单的单行线,每一行使用不同的变量。有些变量在方程之间重叠。2) 这在未来不会改变。只有5种方法可以使用5个不同的方程式计算此变量。主要问题是将变量的使用与父类分离,以便更容易测试。制作5个不同的函数是很容易的,但是,我觉得有一种干净的方法可以将它与某种模式捆绑在一起。3) 我可能想得太多了,最好的解决办法就是为每个案件创建一个函数。@Mohamad:我觉得这没什么区别,但你是最终的法官。(得到外界的意见是好的,但有时你得到的建议更教条,而不是理性。)祝你好运。