
设计模式
一笑而泯
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
js设计模式之适配器模式
一、简单介绍适配器模式比较简单,是对接口或者数据的一个转换。与之前介绍的代理模式和装饰器模式有些相似的地方。不同之处在于,适配器模式主要用来解决两个接口之间不匹配的问题,相当于一个转换层,控制粒度是接口,装饰者模式的目的是给对象添加功能,代理模式的作用是控制对某个对象的所有访问,粒度是对象。二、使用场景在开发时,可能有些功能已经开发完成,现在要兼容第三方的接口,但是第三方返回的数据格式...原创 2020-04-25 20:33:16 · 265 阅读 · 0 评论 -
js设计模式之状态模式
一、简单介绍状态模式的关键是区分事物内部的状态,事物内部状态的改变往往会带来事物的行为改变。总的来说,状态模式就是封装状态,允许一个对象在其内部状态改变时改变它的行为,我们之前一般都是封装行为。二、使用场景在一些场景中,我们会定义一些状态,根据状态去执行不同的操作。比如,一个表单,初始状态有个编辑按钮,表单是只读的。点了编辑之后,表单变为可编辑,同时编辑按钮消失,出现了保存和取消按...原创 2020-04-19 23:44:39 · 574 阅读 · 0 评论 -
js设计模式之装饰者模式
一、简单介绍如果要给对象添加功能,一般我们会用继承的方式,即创建一个父类,我们的对象继承这个父类即可。但是,在复用的时候,可能会创建出大量的子类。这时,我们可以采用动态为对象添加功能的方式,而不是通过创建新的类来实现。这种给对象动态的添加功能的方式就是装饰装饰者模式。因为js中的对象是基于原型的,并非传统的面向对象的语言中对象是基于类的,所以在js中实现装饰者模式非常的简单,给对象添加方法...原创 2020-04-18 23:28:13 · 239 阅读 · 0 评论 -
js设计模式之中介者模式
一、简单介绍在日常开发中,我们将行为封装成一个个对象,在加强了复用性的同时,各个对象之间的联系也加强了,有时也会反过来降低复用性。中介者模式就是添加一个中介者对象,接触对象和对象之间的耦合关系。它可以将联系紧密的对象解耦。命令模式重点在于命令的下达,更多的是单向的流动;发布订阅模式重点在于触发特定条件时的消息推送,或者说是事件执行。中介者的重点在于集中处理逻辑,不关心消息来源。二、使用...原创 2020-04-12 22:17:51 · 167 阅读 · 0 评论 -
js设计模式之职责链模式
一、简单介绍职责链模式的定义是,将多个对象连成一条链,沿这个链传递请求,直到有一个对象处理它,同时传递过程也被终止。二、使用场景在某些场景中,我们有多个类似、优先级不同的对象,这时就可以用职责链模式处理,将优先级高的对象放在链条的前面,优先级低的放在链条的后面。如果前面的对象处理了请求,或者说是命中了请求,后面的对象将不会收到请求,为了将传递请求的功能与对象解耦,我们可以创建一个包...原创 2020-04-11 22:59:35 · 256 阅读 · 0 评论 -
js设计模式之享元模式
一、简单介绍享元模式的核心是运用共享技术来有效支持大量细粒度的对象。享元模式要求将对象的属性划分为内部属性和外部属性,它的目标是尽可能减少共享对象的数量。一般来说,内部属性可以被一些对象共享,外部属性取决于具体的场景,通常不会改变,根据各自的场景而变化,不能被共享。二、使用场景如果需要创建大量类似的对象,那么就可以使用享元模式了。我们将内部属性相同的对象指定为同一个共享的对象,把外部属...原创 2020-04-06 21:51:46 · 199 阅读 · 0 评论 -
js设计模式之模板方法模式
一、简单介绍模板方法模式是基于继承的一种设计模式。分为两部分,一部分是抽象父类,另一部分是具体的实现子类。通常在父类封装了子类的一些公共方法以及它们的执行顺序,子类通过继承父类,继承了公共方法,同时可以根据需要重写父类的方法或者定义自己的方法。二、使用场景模板方法模式适用于执行顺序固定,具体实现不同的一些功能的封装,如有几个页面,进入页面之后都需要初始化数据,然后做一些初始化操作,各个...原创 2020-04-05 19:56:45 · 260 阅读 · 0 评论 -
js设计模式之组合模式
一、简单介绍组合模式是用一些小的子对象来构建更大的对象,或者说,将复杂的功能拆分成一个个相似的子功能,每个子功能组合成一个大的、复杂的功能。二、使用场景组合模式将对象组合成树形结构,以表示"部分—整体"的层次结构。所以,它适用于可以组织成树形结构的一个复杂功能,每个对象可以是单个对象,也可以是组合对象,组合对象下面又有单个对象或者组合对象。这样层层嵌套,像一棵树一样。组合模式的一个...原创 2020-04-04 22:35:00 · 263 阅读 · 0 评论 -
js设计模式之命令模式
一、简单介绍命令模式中的命令指的是一个执行某些特定事情的指令。,即将如果你需要做一件事,你就给一个命令对象发送一个指令,由这个对象负责下发你的指令。你不需要了解你的请求由谁完成,也不知道被请求的具体操作。所以命令模式是一种松耦合的方式。二、使用场景命令模式最常见的使用场景,是我们平时发送请求。每一次请求都是一次命令。 在之前介绍代理模式的时候,我们用了一个防抖的处理,优化了频繁发送请求...原创 2020-03-29 20:47:09 · 199 阅读 · 0 评论 -
js设计模式之发布-订阅模式
一、简单介绍发布订阅模式又叫观察者模式,当一个对象的状态发生改变时,依赖于这个状态的对象都将得到通知。二、应用场景最常见的发布-订阅模式,就是dom的事件监听。我们给dom元素绑定一个事件(如click事件),当对应的交互触发时,我们绑定的事件就会被触发。另外还有目前常用的vue框架,它实现响应式的基础就是发布订阅模式。三、示例现在很多页面都有图片按需加载的需求,即页面滚动到对...原创 2020-03-22 21:42:15 · 237 阅读 · 0 评论 -
js设计模式之代理模式
一、简单介绍代理模式是为一个对象提供一个代用品或占位符,以便控制对它的访问。二、应用场景nginx服务器将用户的请求集中处理,分发给对应的服务器。同时,将服务器的响应分发给对应的客户。代理模式的思想是类似的。或许,你会觉得,这和策略模式一样。但按照我的理解,策略模式更注重的是环境(也就是条件)的区分,然后执行不同的逻辑。代理模式则相当于一个中间件,先对逻辑进行预处理,然后再执行后续...原创 2020-03-15 22:13:59 · 177 阅读 · 0 评论 -
js设计模式之策略模式
一、应用场景策略模式是将一系列行为类似的功能和逻辑封装,将逻辑的使用和逻辑的实现分离。常用的场景如根据输入类型的不同,进行不同的计算,然后返回对应的结果。如银行的评估体系,某个人信誉度良好,则贷款额度为120%,一般为100%,不好为80%(这里只是举一个简单的例子)。策略模式的代码可简单分为两部分,第一个部分是策略类,封装了具体的逻辑,负责功能的实现。第二个部分是环境类,负责使用场景的区...原创 2020-03-14 21:16:46 · 288 阅读 · 0 评论 -
js设计模式之单例模式
一、应用场景 单例模式常用于需要全局或者多个地方共享的同一个实例,如websocket实例、http请求实例、全局的缓存等。之前常用的做法是放在window下,就可以全局调用,但是这样不利于管理,容易造成全局变量的覆盖和污染0。es6引入了module的概念,个人感觉单例模式更容易理解了。二、示例//单例模式const cache;const checkCache =...原创 2020-03-14 20:32:07 · 371 阅读 · 0 评论