.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:继承

 静态事件链就讲完了,经过一点触发多点的好方法,在咱们开发过程当中常常用到;事件

相关文章
相关标签/搜索