js之观察者模式与发布订阅模式

https://www.cnblogs.com/leaf930814/p/9014200.html

观察者模式:
1.两者相互知道,Subject调用Observer,Observer观察着Subject
2.Subject负责添加、删除和发出通知,Observer接收到通知之后update
3.两者耦合在一起

发布订阅模式:
1.是一个控制中心,作为桥梁作用
2.控制中心实现添加、删除以及更新
3.事件可以解耦合

vue中实际应用的解析:
https://www.cnblogs.com/canfoo/p/6891868.html
1.数据劫持defineProperty+观察者模式
2.遍历data,为每一个属性添加数据劫持
3.在get中,添加观察者watcher到list中
4.在set中,更新data并发出更新通知,实现页面同步更新展示
5.watcher是观察者内核,观察对应data的变化,初始化时先通过get方法取值一次,从而调用数据劫持中的get方法,实现观察者watcher的添加
6.更新数据时,调用数据劫持中的set方法,发出更新的通知从而调用对应watcher的update,在update的cb中,实现视图的更新。
7.Data是主体对象,Dep是观察者,在每一个Dep中添加对应的watcher。

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1-------- 走进前端 2-------- jQuery 3-------- CSS 4-------- A...
    依依玖玥阅读 6,889评论 0 34
  • 北京时间10月2日,据《圣何塞水星新闻》报道,昨天勇士与掘金的季前赛开始之前,4届最佳防守球员本-华莱士把上赛季的...
    coco9981阅读 3,579评论 0 1
  • 1、Delicious melons were first grown on estate named Canta...
    ruiminlau阅读 3,843评论 0 0
  • 本以为洗不掉的污渍一入水就化开了,我这勇于自嗨的人,似乎又找到了犯错被原谅的证据迹象。“上德无德,下德执德”,连清...
    自由和安阅读 903评论 2 0
  • 真的半夜趁孩子睡着画的,随手找了一本鬼狐仙怪,越画越心惊,吓死我了,画到聂小倩和骷髅头的时候,邻居不睡觉特配合,闹...
    董季节阅读 4,438评论 9 5