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

微网站建设的第一步彩票网站模版

微网站建设的第一步,彩票网站模版,国家工商信息公示系统,阿里云网站建设的实训报告本文作者为 360 奇舞团前端开发工程师 概述 在日常开发中,开发人员经常使用设计模式来解决软件设计中的问题。其中,观察者模式是一种常用的模式,它可以帮助开发人员更好地处理对象之间的通信。在 JavaScript 中,观察者模式的应用非…

本文作者为 360 奇舞团前端开发工程师

概述

在日常开发中,开发人员经常使用设计模式来解决软件设计中的问题。其中,观察者模式是一种常用的模式,它可以帮助开发人员更好地处理对象之间的通信。在 JavaScript 中,观察者模式的应用非常广泛,可以用于实现事件处理、数据绑定等功能。本文将介绍观察者模式的基本概念和实现方式。

什么是观察者模式?

观察者模式是一种行为型设计模式,它定义了一种一对多的依赖关系,让多个观察者对象(observer)同时监听某一个主题对象(subject)。当主题对象发生变化时,它会自动通知所有的观察者对象,使它们能够及时更新自己的状态。

观察者模式的优点在于它可以实现对象之间的松耦合,使得 Subject 和 Observer 可以独立地变化,而不会相互影响。它还可以提高代码的复用性和可维护性,使得代码更加清晰和易于理解。

事件观察者

该模式的视图如下所示:

EventObserver
│ 
├── subscribe: 添加新的可观察事件
│ 
├── unsubscribe: 移除可观察事件
|
└── broadcast: 执行带有绑定数据的所有事件

首先要执行初始化EventObserver操作:

class EventObserver {constructor() {this.observers = [];}
}

从观察到的事件的空列表开始,并对每个新实例执行此操作。

订阅方法

要添加新事件,请执行以下操作:

subscribe(fn) {this.observers.push(fn);
}

获取观察到的事件列表并将新项目推送到数组中,事件列表是回调函数列表。

要测试这个方法,请执行以下操作:

const fn = () => {};observer.subscribe(fn);// Assert
assert.strictEqual(observer.observers.length, 1);

取消订阅方法

要删除事件,请执行以下操作:

unsubscribe(fn) {this.observers = this.observers.filter((subscriber) => subscriber !== fn);
}

从列表中过滤掉与回调函数匹配的内容。如果没有匹配,回调将保留在列表中,过滤器返回一个新列表并重新分配观察者列表。

要测试这个方法,请执行以下操作:

const observer = new EventObserver();
const fn = () => {};observer.subscribe(fn);observer.unsubscribe(fn);// Assert
assert.strictEqual(observer.observers.length, 0);

回调必须与列表中的相同函数匹配,如果存在匹配项,取消订阅方法会将其从列表中删除。

广播法

要调用所有事件,请执行以下操作:

broadcast(data) {this.observers.forEach((subscriber) => subscriber(data));
}

这会遍历观察到的事件列表并执行所有回调。这样,你就可以获得与订阅事件必要的一对多关系,传入data是回调数据绑定的参数。

要测试这个方法,请执行以下操作:

const observer = new EventObserver();let subscriberHasBeenCalled = false;
const fn = (data) => subscriberHasBeenCalled = data;observer.subscribe(fn);observer.broadcast(true);// Assert
assert(subscriberHasBeenCalled);

使用 let 而不是 const 这样我们就可以更改变量的值,这使得变量可变,然后允许我在回调内部重新分配它的值。let 在代码中会向其他程序员发送一个信号,表明该变量在某个时刻正在发生变化,这样就增加了 JavaScript 代码的可读性和清晰度。

好了,我们已经学会了一个简单的观者模式在 javaScript 中的实现。

总结

这篇主要简单介绍了观察者模式和其简单的实现,设计模式还有很多种,例如:单例模式、策略模式、工厂模式等,我们的核心目的是要学习其思想,而不是死记硬背每一种模式的实现方式。只有理解了设计模式的思想,才能在各种业务场景中灵活地应用它们。

参考链接

https://www.digitalocean.com/community/tutorial-series/javascript-design-patterns

https://developer.mozilla.org/zh-CN/docs/learn/JavaScript https://zhuanlan.zhihu.com/p/77275289

- END -

关于奇舞团

奇舞团是 360 集团最大的大前端团队,代表集团参与 W3C 和 ECMA 会员(TC39)工作。奇舞团非常重视人才培养,有工程师、讲师、翻译官、业务接口人、团队 Leader 等多种发展方向供员工选择,并辅以提供相应的技术力、专业力、通用力、领导力等培训课程。奇舞团以开放和求贤的心态欢迎各种优秀人才关注和加入奇舞团。

5595bc0d25fbd65096e211041be78d7e.png

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

相关文章:

  • 404错误页面放在网站的哪里网站建设需要什么方案
  • 书店网站建设目标调研的方案最近的新闻大事
  • 潢川网站建设地方网站欣赏
  • 惠州网站搭建找谁重庆建设工程人力资源官网
  • 用ps做网站主页网站闭站保护
  • 做视频网站视频放在哪里wordpress改了固定链接出现404
  • wordpress站酷首页linux 什么做网站好
  • 内蒙古建设厅安全资料网站广告网站建设及推广
  • 开发一个网站多少钱军事最新消息今天
  • 网站建设需求流程图网络营销文案实例
  • 17Z一起做网站广州站北京公司网站如何制作
  • 旅行网站建设的规划书wordpress 检索文件
  • 湖州网站网站建设山东网站制作软件
  • 网站建设培训会上的讲话wordpress ad widget
  • html5网站后台页面设计平面设计广告设计
  • 创建网站需要准备哪些资料网站建设流程报告
  • 用.net编写网站天辰建设网
  • wordpress媒体库是哪个文件夹南宁seo关键词排名
  • 辽阳网站建设多少钱北京做网站公司有哪些
  • 吴忠门户网站建设个人网页设计与实现论文免费
  • 网站开发语言有什么要求2022最新热点事件及点评
  • 邢台做网站推广找谁建设中标查询网站
  • 网站制作出租深圳建设网站哪里好
  • 网站设计平台万商云集(成都)科技股份有限公司
  • 无极网站建设wordpress搜索字段
  • 网页设计与网站建设从入门到精通个人物流网站建设方案
  • 网站关键字个数沈阳百度关键词推广
  • wap网站模板五力合一营销型网站建设系统
  • 在线制作网站的工具wordpress设定主页
  • 慢慢来 网站建设建设银行网站看不到e商