观察者模式
当一个对象(subject)的状态发生改变时,已经登记的其他对象能够观察到这一改变,从而作出自己相应的改变。通过这种方式来达到减少依赖关系,
\
\
\
举个例子:
以微信朋友圈为例子。
你就是subject,你的好友就是observer。你发了朋友圈(notify),你的好友们都可以看见,并且他们进行点赞和评论操作(update)。
\
Subject
我们把“你”抽象出来,就是这样:
“你”可以通过attach、detach来添加、删除观察者。
\
然后通过具体的“你”,来实现这些方法。
\
Observer
接下来把“好友”抽象出来
然后通过具体的“朋友”,可以进行一些诸如点赞,评论的操作。
\
测试
可以看到,通过concreteSubject(发朋友圈的人)维护了订阅关系,在通过notifyObserver方法通知订阅者(发朋友圈)之后,观察者都获取到信息,并进行相应的处理(看到点赞或评论。)
他们的关系可以如下图所示:
每个观察者只需要处理自身的逻辑就可以了。
如果有新的业务添加进来,也只需要implement一下Observer,再维护进observers容器中即可。解耦。