.NET簡談靜態事件鏈

在咱們平常開發過程當中常常會遇到多個類實例之間的關聯,無論是B/S仍是C/S的項目,在對實例的使用是同樣的;只不過C/S的項目比較好控制,無論是UI層的對象都能很好的控制,包括繼承、重寫等等;而在B/S裏面可能不太方便,因爲B/S自己的特色,不能暴露內部太多的繼承關係,以避免不當心破壞類的封閉性;我這篇文章主要是討論在多個類實例之間怎麼進行動態關聯,好比咱們在開發Winform項目的時候,可能會碰到兩個或多個窗口之間協同工做的狀況;本人在這種狀況下采用的是靜態事件鏈的解決方案,多個實例之間不存在主次之分,有人確定會以爲在一個類中定義事件,在調用的類中去實例化並訂閱相關事件;這樣解決不了多實例互操做的關係,好比:我有五個窗口分佈在主界面中,當我點擊菜單欄中的一個刷新按鈕時,想讓這五個窗口同時刷新,這樣一來就必須讓這五個窗口實例都訂閱來自一個地方的事件;我爲何用靜態事件,就是爲了方便多實例使用;若是讀者不太清楚事件或者委託鏈之類的概念請閱讀本人的另外一篇文章「.NET簡談委託鏈」;html

1:ide

2:函數

3:3d

圖3中是靜態事件鏈類的定義,定義一個靜態事件好一個靜態方法,注意本人在該類中也訂閱了ClickEvent事件,就是怕沒有任何實例訂閱這個靜態事件,而後又觸發了這個事件,致使空地址封送失敗,也就是空引用調用;orm

4:htm

圖4是模擬窗口的一個實現,在構造函數中咱們訂閱了靜態事件鏈中的一個ClickEvent事件;其他四個窗口都是同樣的,我就不貼圖片了;對象

5:blog

 

6:繼承

 靜態事件鏈就講完了,經過一點觸發多點的好方法,在咱們開發過程當中常常用到;事件

相關文章
相關標籤/搜索