Had*_*adi 11 simulation design-patterns builder composite decorator
我有一个在特定高度和特定温度下运行的模拟:
interface IGeneratable
{
    string Name { get; }
    void Generate();
}    
interface ISimulation : IGeneratable
{
    int Height { get; }
    int Temperature { get; }        
}
的Generate()用于模拟典型的过程包括多个步骤:
void Generate()
{
    Step1();
    Step2();
    Step3();
}
现在,用户可以指定多个高度和/或多个温度.
在这种情况下,产生多个模拟(子模拟),每个高度/温度组合一个.
interface IMultiSimulation : IGeneratable
{
    ISimulation[] SubSimulations { get; }       
}
但是,在这种情况下,子模拟的Generate()方法与Step1,Step2,Step3顺序不同:
Step2()仅需要对所有子模拟执行一次,而不是每个温度执行一次(即每次多次模拟一次).Step1() 首先为所有子模拟预先计算.一般注意事项
IStep其中,实现IGeneratable.因此,模拟可以返回例如步骤列表.我一直在尝试使用装饰模式,但没有成功.
我正在寻找一个适当的模式,其可扩展的解决方案可以处理单个模拟的生成以及多个模拟.
谢谢.
在我看来,有一个非常具体的用例需要实现,所以我建议使用一个包含Generate()实现的类(我希望我正确理解了要求)
class Simulation
{
    string Name { get; }
    int[] Heights { get; }
    int[] Temperatures { get; }
    void Generate() {
         for (int i = 0; i < Temperatures.Count; i++) {
             for (int j = 0; j < Heights.Count; j++) {
                  GenerateStep1();
             }
             GenerateStep2();
             GenerateStep3();
         }
    }
}