设计模式
文章平均质量分 94
设计模式 JavaScript版
夏安
这个作者很懒,什么都没留下…
展开
-
「设计模式 JavaScript 描述」最少知识原则
「设计模式 JavaScript 描述」最少知识原则「设计模式 JavaScript 描述」最少知识原则1. 减少对象之间的联系2. 设计模式中的最少知识原则3. 封装在最少知识原则中的体现「设计模式 JavaScript 描述」最少知识原则最少知识原则(LKP)说的是一个软件实体应当尽可能少地与其他实体发生相互作用。这里的软件实体是一个广义的概念,不仅包括对象,还包括系统、类、模块、函数、变量等。1. 减少对象之间的联系单一职责原则指导我们把对象划分成较小的粒度,这可以提高对象的可复用性。但越来越原创 2022-04-26 14:12:59 · 1332 阅读 · 0 评论 -
「设计模式 JavaScript 描述」单一职责原则
「设计模式 JavaScript 描述」单一职责原则「设计模式 JavaScript 描述」单一职责原则1. 设计模式中的 SRP 原则2. 何时应该分离职责3. 违反 SRP 原则4. SRP 原则的优缺点「设计模式 JavaScript 描述」单一职责原则就一个类而言,应该仅有一个引起它变化的原因。在 JavaScript 中,需要用到类的场景并不太多,单一职责原则更多地是被运用在对象或者方法级别上,因此本节我们的讨论大多基于对象和方法。单一职责原则(SRP)的职责被定义为“引起变化的原因”。如果原创 2022-04-25 12:37:34 · 238 阅读 · 0 评论 -
「设计模式 JavaScript 描述」适配器模式
「设计模式 JavaScript 描述」适配器模式「设计模式 JavaScript 描述」适配器模式适配器模式的应用小结「设计模式 JavaScript 描述」适配器模式适配器模式的作用是解决两个软件实体间的接口不兼容的问题。使用适配器模式之后,原本由于接口不兼容而不能工作的两个软件实体可以一起工作。适配器的别名是包装器(wrapper),这是一个相对简单的模式。在程序开发中有许多这样的场景:当我们试图调用模块或者对象的某个接口时,却发现这个接口的格式并不符合目前的需求。这时候有两种解决办法,第一种是原创 2022-04-24 11:12:31 · 112 阅读 · 0 评论 -
「设计模式 JavaScript 描述」中介者模式
「设计模式 JavaScript 描述」中介者模式「设计模式 JavaScript 描述」中介者模式1. 现实中的中介者2. 中介者模式的例子——泡泡堂游戏2.1 为游戏增加队伍2.2 玩家增多带来的困扰2.3 用中介者模式改造泡泡堂游戏3. 小结「设计模式 JavaScript 描述」中介者模式在我们生活的世界中,每个人每个物体之间都会产生一些错综复杂的联系。在应用程序里也是一样,程序由大大小小的单一对象组成,所有这些对象都按照某种关系和规则来通信。平时我们大概能记住 10 个朋友的电话、30 家餐原创 2022-04-23 12:55:28 · 2808 阅读 · 0 评论 -
「设计模式 JavaScript 描述」职责链模式
「设计模式 JavaScript 描述」职责链模式「设计模式 JavaScript 描述」职责链模式1. 现实中的职责链模式2. 实际开发中的职责链模式3. 用职责链模式重构代码4. 灵活可拆分的职责链节点5. 异步的职责链6. 职责链模式的优缺点7. 用 AOP 实现职责链8. 小结「设计模式 JavaScript 描述」职责链模式职责链模式的定义是:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。原创 2022-04-22 17:10:13 · 116 阅读 · 0 评论 -
「设计模式 JavaScript 描述」享元模式
「设计模式 JavaScript 描述」享元模式「设计模式 JavaScript 描述」享元模式1. 初识享元模式2. 内部状态与外部状态3. 享元模式的通用结构4. 文件上传的例子4.1 对象爆炸4.2 享元模式重构文件上传4.3 剥离外部状态4.4 工厂进行对象实例化4.5 管理器封装外部状态5. 享元模式的适用性6. 再谈内部状态和外部状态6.1 没有内部状态的享元6.2 没有外部状态的享元7. 小结「设计模式 JavaScript 描述」享元模式享元(flyweight)模式是一种用于性能优化的原创 2022-04-20 19:56:33 · 103 阅读 · 0 评论 -
「设计模式 JavaScript 描述」模板方法模式
「设计模式 JavaScript 描述」模板方法模式「设计模式 JavaScript 描述」模板方法模式1. 模板方法模式的定义和组成2. 第一个例子——Coffee or Tea2.1 先泡一杯咖啡2.2 泡一壶茶2.3 分离出共同点2.4 创建 Coffee 子类和 Tea 子类3. 抽象类3.1 抽象类的作用3.2 抽象方法和具体方法3.3 用 TypeScript 实现 Coffee or Tea 的例子3.4 JavaScript 没有抽象类的缺点和解决方案4. 模板方法模式的使用场景5. 钩子原创 2022-04-20 12:59:26 · 100 阅读 · 0 评论 -
「设计模式 JavaScript 描述」组合模式
「设计模式 JavaScript 描述」组合模式在程序设计中,有一些和“事物是由相似的子事物构成” 类似的思想。组合模式就是用小的子对象来构建更大的对象,而这些小的子对象本身也许是由更小的“孙对象”构成的。1. 回顾宏命令我们在之前命令模式中讲解过宏命令的结构和作用。宏命令对象包含了一组具体的子命令对象,不管是宏命令对象,还是子命令对象,都有一个 execute 方法负责执行命令。现在回顾一下这段安装在万能遥控器上的宏命令代码:const closeDoorCommand = { execute原创 2022-04-19 23:25:30 · 907 阅读 · 0 评论 -
「设计模式 JavaScript 描述」命令模式
「设计模式 JavaScript 描述」命令模式「设计模式 JavaScript 描述」命令模式1. 命令模式的用途2. 命令模式的例子——菜单程序3. JavaScript 中的命令模式4. 撤销命令5. 撤消和重做6. 命令队列7. 宏命令8. 小结「设计模式 JavaScript 描述」命令模式假设有一个快餐店,而我是该餐厅的点餐服务员,那么我一天的工作应该是这样的:当某位客人点餐或者打来订餐电话后,我会把他的需求都写在清单上,然后交给厨房,客人不用关心是哪些厨师帮他炒菜。我们餐厅还可以满足客人需原创 2022-04-18 14:19:32 · 198 阅读 · 0 评论 -
「设计模式 JavaScript 描述」发布—订阅模式
「设计模式 JavaScript 描述」发布—订阅模式「设计模式 JavaScript 描述」发布—订阅模式1. 现实中的发布-订阅模式2. 发布-订阅模式的作用3. DOM 事件4. 自定义事件5. 发布-订阅模式的通用实现6. 取消订阅的事件7. 全局的发布-订阅对象8. 模块间通信9. 必须先订阅再发布吗10. 小结「设计模式 JavaScript 描述」发布—订阅模式发布—订阅模式又叫观察者模式,它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知。在原创 2022-04-17 13:33:03 · 198 阅读 · 0 评论 -
「设计模式 JavaScript 描述」代理模式
「设计模式 JavaScript 描述」代理模式「设计模式 JavaScript 描述」代理模式1. 小明追小红的故事2. 保护代理和虚拟代理3. 虚拟代理实现图片预加载4. 代理的意义5. 代理和本体接口的一致性6. 虚拟代理合并 HTTP 请求7. 缓存代理7.1 缓存代理的例子—计算乘积7.2 缓存代理用于ajax异步请求数据8. 用高阶函数动态创建代理9. 其他代理模式小结「设计模式 JavaScript 描述」代理模式代理模式是为一个对象提供一个代用品或占位符,以便控制对它的访问。代理模式是原创 2022-04-16 13:35:38 · 103 阅读 · 0 评论 -
「设计模式 JavaScript 描述」策略模式
「设计模式 JavaScript 描述」策略模式「设计模式 JavaScript 描述」策略模式1. 使用策略模式计算奖金1.1 最初的代码实现1.2 使用组合函数重构代码1.3 使用策略模式重构代码2. JavaScript 版本的策略模式3. 多态在策略模式中的体现4. 表单校验4.1 表单校验的第一个版本4.2 用策略模式重构表单校验4.3 给某个文本输入框添加多种校验规则5. 策略模式的优缺点「设计模式 JavaScript 描述」策略模式在现实中,很多时候也有多种途径到达同一个目的地。比如我们原创 2022-04-15 15:52:37 · 568 阅读 · 0 评论 -
「设计模式 JavaScript 描述」单例模式
「设计模式 JavaScript 描述」单例模式「设计模式 JavaScript 描述」单例模式1. 实现单例模式2. 透明的单例模式3. 用代理实现单例模式4. 惰性单例5. 通用的惰性单例6. 小结「设计模式 JavaScript 描述」单例模式单例模式的定义是:保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式是一种常用的模式,有一些对象我们往往只需要一个,比如线程池、全局缓存、浏览器中的 window 对象等。在 JavaScript 开发中,单例模式的用途同样非常广泛。试想一原创 2022-04-14 18:01:21 · 942 阅读 · 0 评论