观察者模式
有两个角色:
订阅者,主题。
主题:就是变化源,是变化发生的地方。也就是我们所说的兴趣点,比如说是温度吧。我们对温度的变化感兴趣,希望当温度变化时能够得到通知。好,这里就涉及到一个问题,什么时候是温度变化呢?在计算机程序中,没有温度计,温度发生变化说白了还是程序说变化就会变化,一般我们会使用setTemp(int temp)来表示要更新温度的值,也就是此时发生变化。
订阅者:也称为观察者,也就是对变化源感兴趣的人。
怎样将两者之间进行关联呢?
首先,主题中应该维护一个订阅者的列表,这样主题就知道变化发生后需要通知那些订阅者。既然有这样一个列表,就应该有更新这个列表的方法,这就引申出两个方法,一个向列表中增加订阅者,一个向列表中删除订阅者。
怎样通知?主题中有一个方法,调用订阅者的更新方法。
这样主题里面有四个方法。一个变量。订阅者一个方法。这样就完成了。
而在java和c#中用的事件,实际上就是这个列表的功能都有事件来决定。也就是事件这个类封装了三个方法和一个变量。如此而已