【问题标题】:Which design pattern to use for splitting of complex function?使用哪种设计模式来拆分复杂功能?
【发布时间】:2015-08-18 02:36:46
【问题描述】:

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

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

使用某种 Builder 模式来实现我拆分此功能的目标是否合适,或者拥有 5 个不同的功能是否更好:CalculateVariableUsingXMethodCalculateVariableUsingYMethodCalculateVariableUsingZMethod。我会使用哪种设计模式?

【问题讨论】:

    标签: oop design-patterns


    【解决方案1】:

    我建议你不要听从“权威”,而是要靠自己的最佳判断。

    我决定的方式是问两个问题:

    1) 将来当我忘记我在这里做了什么时,最容易遵循什么?

    2) 在我或其他人了解更多之后,这种情况在未来可能如何改变?我怎样才能使这些更改变得容易?

    【讨论】:

    • 1) 方程是简单的一列,每列使用不同的变量。一些变量在方程之间重叠。 2)这在未来不会改变。只有 5 种方法可以使用 5 个不同的方程计算此变量。主要问题是将变量的使用与父类分开,以便更容易测试。制作 5 个不同的功能很容易,但是,我觉得有一种干净的方法可以将它与某种模式捆绑在一起。 3)我可能想太多了,最好的解决方案是为每个案例创建一个函数。
    • @Mohamad:在我看来这并没有太大区别,但你是最终的评委。 (得到外界的意见固然好,但有时你得到的建议比理性更教条。)祝你好运。
    猜你喜欢
    • 2014-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多