美文网首页
7. Observer 模式

7. Observer 模式

作者: 何大炮 | 来源:发表于2019-01-30 18:15 被阅读0次

场景

王大哥收到用户的需求,要做一套订阅系统,类似一个博主,多个粉丝那种。
于是王大哥扣了扣脑袋,想到了三个方法:

方案一:粉丝不断的get博主的状态,从而得到其更新的内容。
评价:fans需要不断的查询,对比更新前后内容。效率低

方案二:当博主更新时,博主会通知粉丝,粉丝自己来获得更新内容。
评价:fans需要随时关注来自博主的提示,来判断是否更新。本来是博主自己的事情,却需要两个人来做。

方案三:当博主更新时,博主会推送更新的内容给粉丝
评价:博主有新发布后,通知fans并调用fans的update(),实现了fans的自动更新。

方案三采用了观察者模式,做到了尽量解耦合,同时提高效率。
这时,王大哥又收到了新的需求:根据博主的信息,用户可以不看的相关的推送。按照方案三,只需要更改用户的设置即可。

总结

意图:在对象之间定义一种一对多的依赖关系,这样当一个对象的状态改变时,所有依赖者都将得到通知并自动更新。
问题:当某个事件发生时,需要向一系列变化着的对象发出通知。
解决方案:observer将监视某个事件的责任委托给中心对象:subject。
效果:如果某些observer只对事件的一个子集感兴趣,那么subject可能会告诉他们不需要知道的事情。
实现:

  1. 让某个事件发生时需要知道的对象将自己注册到另一个监视事件发生或者自己触发事件的对象上。
  2. 事件发生时,Subject告诉Observer事件已经发生。
  3. 为了对所有的Observer类型对象实现Observer接口,有时候需要使用Adapter模式。

当某件事情发生时,要向一系列变化的对象发出通知时,才最适用观察者。

某些观察者有的时候只需要处理一些固定的情况,那我们就可以配合strategy模式一起使用。

通过添加或者删除已经组合的对象,可以灵活的修改代码,而不需要去修改内部代码。

相关文章

  • 7. Observer 模式

    场景 王大哥收到用户的需求,要做一套订阅系统,类似一个博主,多个粉丝那种。于是王大哥扣了扣脑袋,想到了三个方法: ...

  • RxJava2.0----Subject&Observe

    Subject/Observer Subject/Observer模式,Subject翻译为主题 , Subjec...

  • Observer模式

    观察者模式(Observer模式) 定义 观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subs...

  • Observer模式

    java的设计模式 作用 当观察对象的状态发生变化时,通知给观察者(观察者订阅被观察者的状态)应用 需要根据对象状...

  • Observer模式

    观察者模式比较容易理解,就是当观察对象状态发生变化的时候,通知观察者。一个对象可以有多个观察者,所以通知的时候也会...

  • Observer 模式(行为型)

    问题 Observer模式应该是应用最多、影响最广的模式之一,因为Observer的一个实例Model/View/...

  • 行为型设计模式总结

    观察者模式 Observer模式作用是当一个对象发生变化时,能够自动通知它的观察者刷新状态。Observer模式提...

  • 设计模式之观察者模式

    最近准备看vue的源码,为了更轻松的阅读源码,首先需要对Observer模式进行了解,Observer模式是很常见...

  • iOS模式设计之--行为型:7、观察者模式(Observer)

    iOS模式设计之--行为型:7、观察者模式(Observer)

  • 面向对象(八)

    MVC模式数据模型->显示视图 视图模型Observer模式Composite模式,都是控件Strategy模式...

网友评论

      本文标题:7. Observer 模式

      本文链接:https://www.haomeiwen.com/subject/znmcsqtx.html