强制对象按顺序运行/执行方法

chr*_*dev 2 c# design-patterns

我有一个接受多个集合的类,然后需要按特定顺序对这些集合执行计算.例如

public class ClassCalc
    {
        public ClassCalc(double varEm, 
                          List<List<double>> col1, 
                          List<List<double>> col2)
        {
          //set fields etc.
        }

        public void CalcCols(){
           //here, I will 'zip' col1/col2 to create List<double> for each
        }

        public void CalcStep2(){
           //this is dependent on the results from CalcCols()
        }

        public void CalcNonDependent(){
           //this can be called at any stage
        }
}
Run Code Online (Sandbox Code Playgroud)

构造函数强制客户端提供相关数据,所以有一个明显的方法可以做到这一点,通过调用方法constructor,这样,我知道一切都将被填充.但是,这似乎不是一个干净的解决方案,特别是当我想要对代码的部分单元进行单元测试时.

如果我想进行单元测试CalcNonDependent(),我需要完全初始化对象,当我甚至可能不需要其他两个计算的结果时.

所以,我的问题是,是否存在可用于此特定场景的模式; 我看过Chain of Responsibility&Command Pattern,但想知道是否有人有任何建议

Ben*_*Ben 7

你看过模板吗?不确定它是否适用于您的情况100%,但您将拥有一个定义3个抽象方法的基类,然后以正确的顺序调用它们.

class SomeBaseClass
{
    public abstract void CalcCols();

        public abstract void CalcStep2();

        public abstract void CalcNonDependent();

    public void DoAllCalculations() 
    {
        CalcCols();
        CalcStep2();
        CalcNonDependent();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后从这个类继承并提供计算方法的具体实现.

  • 在我看来,这是一个已经过于复杂的问题,然后在它上面添加一个过度设计的层.此外,你将不受欢迎的继承投入到混合中.然而,你有七个上升票.有时候很奇怪.:) (2认同)