博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
我理解的观察者模式
阅读量:6500 次
发布时间:2019-06-24

本文共 849 字,大约阅读时间需要 2 分钟。

什么是观察者模式?

当对象间存在一对多关系时,比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式也叫做发布订阅模式。

观察者模式有什么好处?

观察者模式中,被观察者发生改变时,会自动通知所有观察者对象。 促进形成松散耦合,并不是一个对象调用另一个对象,而是一个对象订阅另一个对象特定活动并在状态改变之后得到通知。这样观察者和被观察者可以单独扩展和重用。

举个栗子

通俗的理解观察者模式就是:你不要动,我要有事就告诉你了。其中‘你’就是被观察者,也可以理解为订阅者。‘我’就是观察者,也就是发布者。 下面代码的实现功能是,当Observer实例中value的值改变的时候,通知Subject实例告诉他value发生了变化,变成了多少。

//观察者class  Observer {	constructor() {		this.arr  = [];//收集被观察者对象		this.value的值改变的时候,通知  =  1;//等待这个值更新时,触发被观察者的更新方法。	}	updateval() {
//更新观察者值的方法。 this.value = 100; this.arr.forEach((s) => { s.update(this.value); }) } save(s) { this.arr.push(s); }}//被观察者class Subject { //被贯彻着会有一个更新的方法 update(value) { console.log('观察者更新了,值为:' + value); }}let subject = new Subject();//每一个小的被观察者let observer = new Observer();//被观察者实例observer.save(subject);//订阅observer.save(subject);observer.updateval();//发布复制代码

具体流程如下:

转载地址:http://qutyo.baihongyu.com/

你可能感兴趣的文章
Spring的发展【一】
查看>>
Date函数基础知识整理
查看>>
Java List集合冒泡法排序的两种实现
查看>>
升级SilverLight为5.1.50907.0后,VS调试时报“无法启动调试--未安装 Silverlight Developer 运行时。请安装一个匹配版本”的处理办法...
查看>>
LocalDB数据库修改排序规则,修复汉字变问号
查看>>
vue 更新了vue-cli到最新版本后引发的问题: require和import、vue-loader的问题
查看>>
CHAKRA3 UART2
查看>>
+ (void)initialize vs 静态构造方法
查看>>
zookeeper 学习笔记2
查看>>
阿里SopHix热修复框架
查看>>
<Netty>(二十一)(高级篇)Netty服务端和客户端创建时序图
查看>>
[内核驱动] DOS路径转化为NT路径
查看>>
详解MySQL基准测试和sysbench工具
查看>>
Linux 中C/C++ search path(头文件搜索路径)
查看>>
Java基础-数组常见排序方式
查看>>
使用C# (.NET Core) 实现迭代器设计模式 (Iterator Pattern)
查看>>
(转)深入浅出数据库索引原理
查看>>
VirtualBox中的虚拟机在Ubuntu 下无法启动之问题解决
查看>>
form表单右边弹窗提示不能为空
查看>>
php实现合并多个数组
查看>>