menbbo

导航

 

观察者模式

  定义对象间一种一对多的关系,使得当一个对象改变状态,则所有依赖于它的对象都会得到通知,并

自动更新,也叫发布订阅模式Publish/Subscribe,属于行为模型。

应用场景

  消息通知:邮件通知、广播通知、微信朋友圈;

  当一个对象改变的同时需要改变其他对象,此时可以考虑观察者模式。

角色

  subject主题:持有多个观察者的引用,封装了添加、删除观察者的方法,并实现通知观察者的方法;

  Observer:抽象观察者,得到通知时做出操作;

  ConcreteSubject:具体消息发布者,给所有观察者发出通知;

  ConcreteObserve:具体观察者,得到通知时做出相应;

优点

  降低了目标与观察者之间的耦合关系,目标与观察者之间建立了一套触发机制;

  观察者和被观察者之间是抽象耦合的;

缺点

  观察者和目标之间有循环引用的话,会触发他们之间进行循环引用,可能导致系统崩溃;

  目标拥有很多观察者时,通知每个观察者会花费很多时间;

 

posted on 2022-03-07 22:02  menbbo  阅读(26)  评论(0编辑  收藏  举报