C#Observer設計模式(報警系統)


初學C#,需要開發一個指標報警系統,大致可以這么簡單描述:

指標數據源已經存在於數據庫,需要通過Web Service訪問它獲取某指標,接着根據報警配置判斷指標是否合法產生報警行為。要求實時監控,實時報警,擴展性強。


在這個解決方案中,我寫了兩個project,一個是Web Service獲取指標的project,一個是具體的報警project。Web Service很簡單,只需模擬出取指標的環境,接着在報警的project中添加Web Service引用,能獲取指標即可。

Web Service可以參考:

http://www.cnblogs.com/denylau/archive/2010/07/23/1783530.html


剩下就是報警系統的具體開發了,我設計了如下六個類,這六個類的主要內容如下:

1)Configurator:只負責報警配置的讀與寫。

2)Monitor:只負責實時獲取源數據中的指標(利用Web Service)。指標值被Alarmer監聽,每獲取一個指標值,就觸發Alarmer中的指標判斷事件。

3)Alarmer:只負責判斷當前這個時刻的指標值是否合法。維護一個指標隊列,用於實現歷史監控報警功能。指定的報警狀態被Handler監聽。

4)Handler:只負責處理報警結果。

5)Initializer:負責初始化上述對象所需要的參數。

6)Initiator:負責封裝以上全部對象。

其中類1、2、3、4就是一個整體的“規則設置+監控指標+指標判斷+結果處理”模塊;類5、6是提供該模塊更好的封裝性,方便主程序中使用多線程。


其中我兩次用到了Observer設計模式(指標值被Alarmer監聽,報警狀態被Handler監聽)。就我目前的感受,Observer設計模式適合一種松耦合的依賴關系,當一個對象的某狀態發生變化時,另一個對象立馬得到通知並采取相應的行動。很明顯報警適合這樣的模式。


學習Observer設計模式時,我參考了很多資料,其中以下兩個講的比較好。

可以參考:

http://www.cnblogs.com/donghaiyiyu/archive/2007/07/29/828738.html

http://wenku.baidu.com/view/1d3cdccc0508763231121288.html



注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com