“实时”可变类设计

时间:2012-07-11 19:12:40

标签: c# winforms

我的应用用于离心泵叶轮设计。用户可以通过winform gui实时更改某些属性(流速,尺寸等),并且应该实时提供大部分结果。

有13个用户可更改的参数和大约70个计算参数。

大多数计算在数学上非常复杂,其中一个参数需要迭代(不超过10次迭代)。

我的解决方案包含并计算到目前为止的所有参数:

  1. 使用描述用户可更改参数的属性和计算结果参数的方法的类。
  2. 不可变的类,在创建时计算所有内容。
  3. 使用.NET 4.0中的Lazy类的懒惰解决方案
  4. 我已经问过关于CR的this问题,这个问题来自我的懒惰解决方案。

    所以我的问题是哪种方法最适合“实时”解决方案?还有其他更好的解决方案吗?

1 个答案:

答案 0 :(得分:2)

我会选择解决方案1,我怀疑每个泵都具有相同的属性,只是属性的不同值。

public class Pump
{
    public double Speed { get; set; }
    public double Size { get; set; }
    public void GetCFM() { return Speed * Size; }
}

GetCFM的任何调用都会返回最新的计算结果。

如果您不想手动拨打GetCFM,则可以改为Observer Pattern。使用 Observer Pattern ,您将触发一个处理程序,该处理程序会在任何属性发生更改时随时得到通知。

此外,我怀疑您对real time computation的理解与文章中所解释的不同。