我正在创建一个计算引擎,计算有4个级别
要计算LevelA2,我们需要首先计算LevelD并计算LevelD,我们需要LevelC第一个输出,LevelB我们需要LevelA1。
现在在计算过程中,我们将计算在计算结束时需要输出的每个级别的几个中间值。
大约有50个输入字段(这些字段的集合)和计算输出字段的计数几乎相似。
我想知道一种最适合这种情况的设计模式。 几个具体问题:
提前致谢!!!
答案 0 :(得分:0)
我认为这种情况最合适的模式是Command模式。 你可以找到很多这种模式的例子。我向你提供了其中一个。
答案 1 :(得分:0)
如果所有组件的结构相同,那么
如果您需要每个级别的历史记录或记录
如果你想在不同的班级中承担所有责任,那么
如果你想要一个包装中的总复杂性,那么
在这种情况下,如果计算依赖性正在改变,我建议为组件创建一个类并保留组件的成员变量集合,即使用复合模式。每个子组件计算都将贡献给总组件结果。
这是大致的结构
class sample
{
int data;
list<sample> childList;
int resultUptoThisPosition;
bool ifResultCalculatedUptoThisPosition;
void calculateresult()
{
int childResult = 0;
forall(var clild in childList)
{
if(child.ifResultCalculatedUptoThisPosition == false)
{
child.calculateresult();
}
childResult+=resultUptoThisPosition;
}
resultUptoThisPosition += childResult; // own result is calculated from child result
ifResultCalculatedUptoThisPosition = true; // calculation is done
}
}