.NET簡談靜態事件鏈
在我們日常開發過程中經常會遇到多個類實例之間的關聯,不管是B/S還是C/S的項目,在對實例的使用是一樣的;只不過C/S的項目比較好控制,不管是UI層的對象都能很好的控制,包括繼承、重寫等等;而在B/S里面可能不太方便。
由于B/S本身的特點,不能暴露內部太多的繼承關系,以免不小心破壞類的封閉性;我這篇文章主要是討論在多個類實例之間怎么進行動態關聯,比如我們在開發Winform項目的時候,可能會碰到兩個或多個窗口之間協同工作的情況;本人在這種情況下采用的是靜態事件鏈的解決方案,多個實例之間不存在主次之分,有人肯定會覺得在一個類中定義事件,在調用的類中去實例化并訂閱相關事件;這樣解決不了多實例互操作的關系。
比如:我有五個窗口分布在主界面中,當我點擊菜單欄中的一個刷新按鈕時,想讓這五個窗口同時刷新,這樣一來就必須讓這五個窗口實例都訂閱來自一個地方的事件;我為什么用靜態事件,就是為了方便多實例使用。
1、
2:
3:
圖3中是靜態事件鏈類的定義,定義一個靜態事件好一個靜態方法,注意本人在該類中也訂閱了ClickEvent事件,就是怕沒有任何實例訂閱這個靜態事件,然后又觸發了這個事件,導致空地址封送失敗,也就是空引用調用;
4:
圖4是模擬窗口的一個實現,在構造函數中我們訂閱了靜態事件鏈中的一個ClickEvent事件;其余四個窗口都是一樣的,我就不貼圖片了;
5:
6:
7:
靜態事件鏈就講完了,通過一點觸發多點的好方法,在我們開發過程中經常用到。
【編輯推薦】