观察者模式,其实指的就是,一对多的解释。一个对象发生改变,对应的多个订阅者都需要发生对应改变,这种多个对象观察一个对象的区别就是观察者模式。
举例子说明:
一个办公楼。不知道有多少个公司,但是他们都有一个物业群,这个群物业会通知一些疫情相关情况。物业会在群里通知办公楼的封锁情况,而各个公司的负责人则需要在群里随时观察是不是有情况,从而做出改变。同时这个群的所有者(物业)也会用有拉人入群,发送公告,清人出群的权限。
其实他们的意义是一致的。
**首先,**你必须有一个对象为观察者。也就是说,例子中办公楼的这些公司。属于观察者。在观察某种情况,当这种情况出现后,可以改变自己的一些状态或者操作。
**其次,**有一个对象为主体,我们也可以叫他为通知者,也就是说,这个主体需要在被观察者的状态改变后,用来通知观察者们。这个可以是例子中的物业群。
**最后,**需要有一个对象为被观察者,也就是说,在某种特定状态改变后(被主体对象检测到),例如:例子中 物业群公告。
所以,我们可以以例子1为例,写一个代码实现自己的观察者模式。
控制台上打印如上。
至此我们的观察订阅者demo就实现完成了。
物业群拥有拉入公司,移除公司,发送公告等操作。
而观察者(公司)仅仅是在物业群有公告发出的时候,根据公告自身,自己做出响应。