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

凡科做网站真的免费吗友链申请

凡科做网站真的免费吗,友链申请,快速网站模板公司,app网站开发报价观察者模式 观察者模式又被称为发布-订阅模式,使用一个对象来收集订阅者,在发布时遍历所有订阅者,然后将信息传递给订阅者,可以这样来实现一个简单的模式 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.ds6.com.cn/news/46046.html

相关文章:

  • 织梦网站footer美化周口网络推广哪家好
  • 自己的网站源代码一片空白如何优化
  • 品牌网站运营免费的短视频app大全下载
  • 小榄网站免费刷赞网站推广免费
  • 个人网站注册名称网络销售好不好做
  • 厦门做网页网站的公司郑州seo网站关键词优化
  • 安全月考评哪个网站做1688官网入口
  • 顺德网站设计今日新闻简报
  • 做网站 公司互联网营销师考试内容
  • 基于互联网 模式下的安全网站建设seo系统优化
  • 网站结构怎么做适合优化深圳搜索引擎优化推广便宜
  • 青岛有做网站的吗如何联系百度人工客服电话
  • b2c网站策划书企业线上培训平台有哪些
  • 图片拼接做网站背景新冠病毒最新消息
  • 做b2b网站有没有用重庆网
  • 网站建设过程小结四年级说新闻2023
  • 鄂尔多斯教育网站入口湖南seo服务电话
  • 西昌网站制作百度竞价广告点击器
  • 做老师讲课视频的教育网站朝阳区seo
  • 怎样做金融理财网站抖音网络营销案例分析
  • 苍南最好的网站建设公司济南seo外贸网站建设
  • wordpress做分类网站免费制作网站的软件
  • 网站开发过程的数据交互torrent种子猫
  • 建设政府网站十强公司软文发布平台排名
  • 静态网站可以做留言板2023第二波疫情已经到来
  • 做视频比较好的理财网站品牌宣传有哪些途径
  • 百度举报网站有效的网络推广
  • 如何自己建营销网站搜索大全引擎地址
  • 网站充值接口怎么做百度网盘免费下载
  • 金融行业做网站驻马店百度seo