程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 無廢話C#設計模式之十九:Observer(4)

無廢話C#設計模式之十九:Observer(4)

編輯:關於C語言

實現要點

l 抽象主體角色公開了自身的事件,可以給任意觀察者訂閱。

l 抽象觀察者角色定義了統一的處理行為,在C#中使用事件-代理模式的話,統一的處理行為並不這麼重要,有的時候甚至還會限制靈活性。由於本例的特殊原因,並沒有從這個接口中得益。

l 響應方法訂閱代理事件的操作可以在觀察者中定義也可以在外部定義,根據自己的需求決定,放在外部定義靈活性更高。

l 具體觀察者往往只需要實現響應方法即可。

l 可以有多個主體角色、多個觀察者角色交錯,也可以一個類型是兩個角色,主體也可以提供多個事件。從應用上來說觀察者模式變化是非常多的。

注意事項

l 由於這種靈活性,在觀察者訂閱事件的時候需要考慮是否會出現破壞行為?是否會出現無限循環或死鎖等問題?觀察者響應的時候是否會影響其它觀察者?

l 對於觀察者數量很多的時候使用觀察者模式並不適合,可能會造成性能問題。

l 在不能采用事件-代理方式完成觀察者模式的情況下(比如跨網絡應用等)可以考慮采用傳統的觀察者模式。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved