观察者模式
观察者模式有两个典型模式。推模式和拉模式。
推模式比较简单,只要观察者注册,只要主题改变,不管观察者是否需要,也不管观察者是否全部需要,一股脑都会推送给观察者。
而拉模式用于解决这个问题,他是通知观察者自身主题有改变,而具体需要什么东西,由观察者自身拉取。
体现在代码上,观察者的update
函数有差异,推模式传递的是主题即观察者所事物。而拉模式中,这个传递的是主题类的对象引用,有了它,可以定制拉取什么主题。
值得一提的是,在主题抽象类中,可以定义一个检查变化度的函数,当主题变化达到一个度时,才进行推送,而非一变化就推送。
例如温度的变化,可以设定一个阈值,大于1°,大于2°,可以调节,而非从1变化到1.1也要进行推送。