回答
我會解決方案1,我懷疑每個泵都具有相同的屬性,只是屬性的不同值。
public class Pump
{
public double Speed { get; set; }
public double Size { get; set; }
public void GetCFM() { return Speed * Size; }
}
對GetCFM
的任何調用將始終返回最新的計算結果。
如果您不想手動撥打GetCFM
,則可以改爲實現Observer Pattern。使用觀察者模式您將觸發一個處理程序,在任何時候任何屬性發生更改時都會收到通知。
此外,我懷疑你對real time computation的理解與文章中解釋的不同。
這是我的第一種方法,但是當我注意到那些不必要地多次調用的方法,例如:public void GetABC(){return GetCFM()* GetDEF(); }也textBox.Text = GetABC()。ToString()我開始尋找的東西,將保存值,直到下一次重新計算。我仍然在使用這個解決方案,但它似乎不正確:)。 – Archibald 2012-07-11 19:29:31
您可以調用一個私有/受保護方法來獲取計算結果,並且當您更改屬性時(在屬性'set'方法中),您可以調用此方法,該方法在內部保存該值,然後顯示其他屬性。我建議你不要*這樣做,但是,因爲它會導致很難理解的代碼。計算機在計算數字方面速度非常快,除非實際觀察到瓶頸,否則您可能只是在不必要地編寫更復雜(且難以維護)的代碼。 – Matthew 2012-07-11 19:33:29
實時意味着用戶不需要按提交按鈕或類似的東西,並在每次更改後提供重新計算的值。 – Archibald 2012-07-11 19:44:24
- 1. 緩存設計:基於不可變關鍵碼的可變實體對象的輕量級
- 2. 不可變的類設計
- 3. 不可變的類設計
- 4. 可可回調設計:最佳實踐
- 5. 分層級設計
- 6. 班級設計師
- 7. C#+班級設計
- 8. 設計一個可變類,消耗後變爲不可變
- 9. Rails的設計可證實 - 改
- 10. 設計/實現...最有可能與AJAX
- 11. ExtJS可以實現這種設計嗎?
- 12. ConstraintLayout可以實現這種設計嗎?
- 13. 類「超級」可變
- 14. C++可變參數類模板設計
- 15. 性能不可變的對象設計
- 16. OO設計:繼承VS型(ENUM)可變
- 17. 三柱可變側網頁設計
- 18. 是否可以將方法級別變量設置爲類級別變量?
- 19. CRUD級鎖 - 設計模式
- 20. 設計超級用戶
- 21. 多級隊列設計
- 22. 班級設計決定
- 23. ELO評級 - mysql設計
- 24. 高級庫和API設計
- 25. 高級SQL查詢設計
- 26. 高級rdlc報告設計
- 27. 數據庫級的設計
- 28. 關於jQuery變化的實時計算
- 29. 設計模式與實時示例
- 30. 實時應用程序的MVVM設計
性能是一個問題嗎?也就是說,只要需要瓶頸,就重新計算這70個參數。 – 2012-07-11 19:27:21
@ChrisSinclair到目前爲止,第一種解決方案工作得相當不錯,但是在用戶更改一個參數之後,某些方法會被調用超過100次。 – Archibald 2012-07-11 19:37:58
也許選項#2是最好的。讓用戶輸入他們想要的新驅動參數,用這些參數創建一個新對象,讓它預先計算70個其他參數,然後將該對象送入系統。至少這樣你就不會陷入在用戶更新其他值的同時計算值的情況。編輯:也許嘗試拆分對象到2.第一類作爲輸入參數_only_,它有一個'Calculate'方法,它返回第二個不可變類,其中包含所有輸入參數_and_ 70驅動值。 – 2012-07-11 19:40:05