Observer - 监听者/观察者模式
2018-09-18 本文已影响0人
DjangoW
介绍
观察者模式是通过对象之间的依赖关系,在一个对象发生改变的时候通知其他对象(注册为监听者的对象),被通知对象分别做出相应反应。此模式又叫做发布-订阅模式(Publish/Subscribe)、模型-视图模式(Model/View)。观察者模式是一个直观&容易理解的设计模式,而且应用广泛。
Observer应用场景
当存在一对一,或者一对多关系的时候都可以考虑使用观察者模式。最常用在订阅-发布系统,GUI系统中。
比如在MVC模式中,Model的改变会触发相关View的更新。昵称的改变会导致页面上所有用到昵称的地方都被更新。
当多个对象之间依次触发,就形成了一条触发链。如果观察者太多触发链太长,性能问题可能比较突出。而且如果触发链中有环路则会造成死循环!
Observer通用UML图
类图:
Obeserver.jpg
时序图:
seq_Obeserver.jpg
Reference
https://design-patterns.readthedocs.io/zh_CN/latest/behavioral_patterns/observer.html