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,但想知道是否有人有任何建议
你看过模板吗?不确定它是否适用于您的情况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)
然后从这个类继承并提供计算方法的具体实现.