收藏 分享(赏)

JavaScript设计模式中的单例模式和观察者模式.docx

上传人:明湖 文档编号:3926185 上传时间:2021-05-10 格式:DOCX 页数:6 大小:18.34KB
下载 相关 举报
JavaScript设计模式中的单例模式和观察者模式.docx_第1页
第1页 / 共6页
JavaScript设计模式中的单例模式和观察者模式.docx_第2页
第2页 / 共6页
JavaScript设计模式中的单例模式和观察者模式.docx_第3页
第3页 / 共6页
JavaScript设计模式中的单例模式和观察者模式.docx_第4页
第4页 / 共6页
JavaScript设计模式中的单例模式和观察者模式.docx_第5页
第5页 / 共6页
亲,该文档总共6页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、单例模式:Document/*就是保证一个类只有一个实例,实现的方法一般是先判断实例存在与否,如果存在直接返回,如果不存在就创建了再返回,这就确保了一个类只有一个实例对象在JavaScript里,单例作为一个命名空间提供者,从全局命名空间里提供一个唯一的访问来访问该对象。*/单例模式核心代码functionPerson()this.name=Jack/全局varinstance=nullfunctionsingleton()if(instance=null)instance=newPerson()returninstance/*singleton第一次调用的时候+if条件判断,判断instan

2、ce=null+现在自己作用域里面没有instance,去到父级作用域访问+也就是拿到了全局作用域的instance+现在全局的instance就是一个null,if条件为true+给instance赋值给一个Person的实例(实例001)+现在全局的instance的值就是实例001+returninstance就是return实例001+p1得到的就是实例001*/varp1=singleton()/*singleton第二次调用的时候+if条件判断,判断instance=null+现在自己作用域里面没有instance,去到父级作用域访问+也就是拿到了全局的instance+现在全局的

3、instance就是一个实例001+if条件不满足,代码不执行+returninstance就是return实例001+p2得到的依旧是实例001*/varp2=singleton()/p1和p2得到的都是第一次执行的时候的实例/他们两个其实是一个地址console.log(p1=p2)/true观察者模式:Document/*观察者模式的使用场合就是:当一个对象的改变需要同时改变其它对象,并且它不知道具体有多少对象需要改变的时候,就应该考虑使用观察者模式。*/需要两个构造函数(被观察者和观察者)/1.被观察者(学生,小明)classStudentconstructor()/construct

4、or就相当于es5的构造函数体是一个构造器/一个学生本身的状态,应该是好好学习this.state=好好学习/准备一个数组,放监视学生的人/将来一旦状态从好好学习变成玩手机的时候,就让这个里面的所有老师触发技能this.observers=/方法/1.可以改变状态的方法setState(value)/可以把自己的状态改变this.state=value/状态一旦改变,就要通知监视他的人this.notify()/2.获取自己的状态getState()returnthis.state/3.添加观察着/向this.observers里面追加一个看着这个同学的人attach(observer)thi

5、s.observers.push(observer)/4.通知this.observers数组里面的每一个人,状态改变了notify()this.observers.forEach(item=item.qingjiazhang(this.state)/2.观察着(老师,班主任,教学主任,年级主任,.)classObserverconstructor(name)/用它来标明一下老师的类别this.name=name/方法,就是这些老师能触发的技能qingjiazhang(state)console.log(我是$this.name,因为你$state了,我要请你家长来!)varxiaoming=

6、newStudent()/被观察者varbanzhuren=newObserver(班主任)/观察者varjiaowuzhuren=newObserver(教务主任)/观察者varnianjizhuren=newObserver(年级主任)/观察者/让班主任看着小明xiaoming.attach(banzhuren)/让教务主任看着小明xiaoming.attach(jiaowuzhuren)/让年级主任看着小明xiaoming.attach(nianjizhuren)/当小明状态改变的时候/xiaoming.setState()就能改变小明现在的状态/就会触发xiaoming.notify()/就会把xiaoming.observers这个数组里面的每一个对象的请家长技能调用xiaoming.setState(玩手机)console.log(xiaoming)

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 网络技术 > 程序设计

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报