观察者模式
观察者模式
定义对象间一种一对多的关系,使得当一个对象改变状态,则所有依赖于它的对象都会得到通知,并
自动更新,也叫发布订阅模式Publish/Subscribe,属于行为模型。
应用场景
消息通知:邮件通知、广播通知、微信朋友圈;
当一个对象改变的同时需要改变其他对象,此时可以考虑观察者模式。
角色
subject主题:持有多个观察者的引用,封装了添加、删除观察者的方法,并实现通知观察者的方法;
Observer:抽象观察者,得到通知时做出操作;
ConcreteSubject:具体消息发布者,给所有观察者发出通知;
ConcreteObserve:具体观察者,得到通知时做出相应;
优点
降低了目标与观察者之间的耦合关系,目标与观察者之间建立了一套触发机制;
观察者和被观察者之间是抽象耦合的;
缺点
观察者和目标之间有循环引用的话,会触发他们之间进行循环引用,可能导致系统崩溃;
目标拥有很多观察者时,通知每个观察者会花费很多时间;