当前位置: 首页 > news >正文

网站个人备案百度推官织梦做网站视频教程

网站个人备案百度推官,织梦做网站视频教程,wordpress图片弹出,济南城乡建设官方网站观察者模式 观察者模式又被称为发布-订阅模式,使用一个对象来收集订阅者,在发布时遍历所有订阅者,然后将信息传递给订阅者,可以这样来实现一个简单的模式 const Observable (function () {let __messages {}return {register:…

观察者模式

观察者模式又被称为发布-订阅模式,使用一个对象来收集订阅者,在发布时遍历所有订阅者,然后将信息传递给订阅者,可以这样来实现一个简单的模式

const Observable = (function () {let __messages = {}return {register: function (type, fn) {if (typeof __messages[type] === 'undefined') {__messages[type] = [fn]} else {__messages[type].push(fn)}},fire: function (type, args = {}) {if (__messages[type] === undefined) {return}let events = {type,args}__messages[type].forEach(fn => {fn.call(this, events)})},remove: function (type, fn) {if (__messages[type] instanceof Array) {let index = __messages[type].indexOf(fn)if (index >= 0) {__messages[type].splice(index, 1)}}}}
})()const fn = function (e) {console.log(e.type,e.args.msg)
}
Observable.register('test', fn)
Observable.remove('test',fn)
Observable.register('test', function (e) {console.log(e.type,e.args.msg,2122)
})Observable.fire('test', { msg: 'hello world' }) // test hello world 2122

案例

假使有一个学生跟老师的互动


// 学生类
const Student = function (result) {this.result = resultthis.say =  ()=> {console.log(this.result)}
}// 学生回答问题
Student.prototype.answer = function (que) {// 注册事件Observable.register(que, this.say)
}Student.prototype.sleep = function (que) {console.log(this.result + ' ' + que + '被注销')Observable.remove(que, this.say)
}// 老师类
const Teacher = function () {
}
Teacher.prototype.ask = function (que) {console.log('老师提问:' + que)Observable.fire(que)
}let stu1 = new Student('学生1回答问题')
let stu2 = new Student('学生2回答问题')
let tea = new Teacher()
stu1.answer('1+1等于多少')
stu1.answer('2+2等于多少')
stu2.answer('1+1等于多少')
stu2.answer('2+2等于多少')
stu2.sleep('1+1等于多少')
tea.ask('1+1等于多少')
tea.ask('2+2等于多少')

输出

/*
学生2回答问题 1+1等于多少被注销
老师提问:1+1等于多少
学生1回答问题
老师提问:2+2等于多少
学生1回答问题
学生2回答问题*/

结论

通过观察者模式可以团队开发中模块间通讯问题

解耦两个相互依赖的对象,使其侧重依赖于观察者的消息机制。这样对于任意一个订阅者对象来说,其他订阅者对象的改变不会影响到自身。对于每一个订阅者来说,其自与既可以是消息的发出者也可以是消息的执行者,这都依赖于调用观察者对象的三种方法(订消息,注销消息,发布消息)中的哪一种

http://www.yayakq.cn/news/840122/

相关文章:

  • 箱包网站设计大通拓客软件官网
  • 做英文网站常用的字体做参茸产品的网站
  • 做平台还要做网站吗西安搬家公司哪家服务好还实惠
  • 来个网站急急急2021年广州微信网站开发公司
  • 上海 房地产网站建设上海网站专业制作
  • 怎么样做网站卖农产品什么叫做电商
  • 为什么网站浏览不是做的那样wordpress手机登录代码
  • 网站建设考虑哪些因素向自己做网站
  • 东莞市建设局质量监督网站黑龙江省垦区建设协会网站
  • 男人和女人做哪个网站网站客户端制作多少钱
  • 四川建设厅官方网站九大员通知购物网站建设 优帮云
  • 旅游网站制作方案wordpress 扫码付费
  • 上海工程建设执业资格注册中心网站WordPress标题换行显示
  • 厦门自助网站建设报价口碑营销公司
  • 网络营销推广公司网站有哪些搜索引擎营销sem包括
  • 深圳网站建设服务中心官网中国平安金融科技有限公司
  • 个人想做企业网站备案协同办公oa
  • 部门网站开发选择热门网站做推广的原因
  • 怎么样创建做零食山楂的网站gulf oil wordpress
  • 教程网站建设中山市网站建设公司
  • 小红书的网站建设深圳十大教育培训机构排名
  • 常用网站建设技术是什么意思数据可视化网站
  • 摄影师作品网站有哪些营销型网站页面布局
  • 做网站需要用到哪些开发软件电子书网站怎么做
  • 钓鱼网站怎么做防护教程seo网站内部优化
  • 部门网站建设管理经验交流材料开源cms管理系统
  • wordpress网站配置文件网站域名被黑
  • dede门户网站模板下载自己做的网站能被百度收录吗
  • 沈阳网站企业青岛简易付网络技术有限公司
  • 一个虚拟主机怎么做多个网站附近企业