事件的本质其实是一种消息机制,也可以说类似于布尔条件判断。
如果能用条件判断写清楚的业务逻辑就不需要事件的通知去执行相应的逻辑。
但是比如说鼠标点击、数据传输完毕、数据计算完毕等等不能用(布尔条件表达式)的情况,这需要事件的通知机制再去执行业务逻辑。
所以事件的发布与订阅可以在两个类之间,也可以在一个类内部。
一、在两个类之间的事件通知
例如:窗体当中的控件单击事件(该控件为一个类且继承自基类Control,相关的事件继承自基类,有可能也独自写了事件,或改写了基类事件的触发条件),
会通知该窗体类订阅该事件的方法,这种情况可以理解为被动接收事件消息通知,因为事件是发生在其他的类。
二、一个类内部事件的发布订阅
例如:在窗体内的初始化构造函数当中,订阅该窗体关闭事件的方法,该方法可以执行关闭该窗所在的容器也可以通知其他类执行相应的方法,
这种情况可以理解为主动推送事件消息通知,因为事件发生在类的内部。