![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
js设计模式
叶川飞流
学而时习之,不亦乐乎
展开
-
设计模式 —— 原型链模式(2021/5/27)
概念 原型模式(prototype)是指用原型实例指向创建对象的种类,并且通过拷贝这些原型创建新的对象。 对于原型模式,可以利用JavaScript特有的原型继承特性去创建对象的方式,真正的原型继承是作为最新版的ECMAScript5标准提出的,使用Object.create方法来创建这样的对象,如Object.create(prototype, optionalDescriptorObjects) 拟物化解读 袋鼠妈妈是小袋鼠的原型,小袋鼠可以和袋鼠妈妈不一样,也不会影响袋鼠妈妈 模式作.原创 2021-05-28 00:08:44 · 121 阅读 · 0 评论 -
设计模式 —— 职责链模式(2021/5/26)
概念 职责链模式提供一种方法顺序访问一个聚合对象中各个元素,而又不需要暴露该方法中的内部表示。 eg 链条上的每一个小节 类似于jquery的each方法 模式作用: 1.为遍历不同的集合结构提供一个统一的接口,从而支持同样的算法在不同的集合结构上进行操作。 2.对于集合内部结果常常变化各异,我们不想暴露其内部结构的话,但又想让客户代码透明底访问其中的元素,这种情况下我们可以使用迭代器模式。 注意事项: 1.一般的迭代,我们至少要有2个方法,hasNext()和Next(),这.原创 2021-05-26 23:22:05 · 91 阅读 · 1 评论 -
设计模式 —— 外观模式(2021/5/25)
概念 外观模式(Facade)为子系统中的一组接口提供了一个一致的界面,此模块定义了一个高层接口,这个接口使得这一子系统更加容易使用。 外观模式不仅简化类中的接口,而且对接口与调用者也进行了解耦。外观模式经常被认为开发者必备,它可以将一些复杂操作封装起来,并创建一个简单的接口用于调用。 拟物化解读 一个大户人家发馒头,通过门口发馒头,但是大户人家的馒头工序外界是不知道的,也不需要知道。 模式作用 1.在设计初期,应该要有意识地将不同的两个层分离,比如经典的三层结构。 2.在开发阶段,子.原创 2021-05-25 23:28:37 · 102 阅读 · 0 评论 -
设计模式 —— 适配器模式(2021/5/25)
概念 适配器模式(Adapter)是将一个类(对象)的接口(方法或属性)转换成客户希望的另外一个接口(方法或属性),适配器模式使得原本由于接口不兼容而不能一起工作的那些类(对象)可以一起工作。 ...原创 2021-05-25 22:36:40 · 51 阅读 · 0 评论 -
设计模式 —— 模板方法(2021/5/22)
概念 模板方法(TemplateMethod)定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 模板方法是一种代码复用的基本技术,在类库中尤为重要,因为他们提取了类库中的公共行为。模板方法导致一种反向的控制结构,这种结构就是传说中的“好莱坞法则”,即“别找找我们,我们找你”,这指的是父类调用一个类的操作,而不是相反。具体体现是面向对象编程编程语言里的抽象类(以及其中的抽象方法),以及继承该抽象类(和抽象方法)的子类。 .原创 2021-05-22 23:38:51 · 103 阅读 · 0 评论 -
设计模式 —— 命令模式(2021/5/21)
概念 命令模式(Command)的定义是:用来对方法调用进行参数化处理和传送,经过这样处理过的方法调用可以在任何需要的时候执行。也就是说该模式旨在将函数的调用、请求和操作封装成一个单一的对象,然后对这个对象进行一系列的处理。它也可以用来消除调用操作的对象和实现操作的对象之间的耦合。这为各种具体的类的更换带来了极大的灵活性。 模式作用: 1.将函数的封装、请求、调用结合为一体。 2.调用具体的函数解耦命令对象与接收对象。 3.提高程序模块化的灵活性。 注意事项: 1.不需要接口一致,直接.原创 2021-05-21 23:56:53 · 95 阅读 · 0 评论 -
设计模式 —— 建造者模式(2021/5/20)
概念 建造者模式可以将一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。也就是说如果我们用了建造者模式,那么用户就需要指定需要建造的类型就可以得到它们,而具体建造的过程和细节就不需要知道了。建造者模式实际,就是一个指挥者,一个建造者,一个使用指挥者调用具体建造者工作得出结果的客户。 建造者模式主要用于“分步骤构建一个复杂的对象”,在这其中“分步骤”是一个稳定的算法,而复杂对象的各个部分则经常变化。 指挥者分配任务,建造者进行开发,各司其职,稳定在一个大的流程当中。 ...原创 2021-05-20 22:47:11 · 91 阅读 · 0 评论 -
设计模式 —— 观察者模式(2021/5/19)
概念 观察者模式又叫发布订阅模式(Publish/Subscribe),它定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象,这个主题对象的状态发生变化时就会通知所有的观察者对象,使得它们能够自动更新自己。 模式作用: 1.支持简单的广播通信,自动通知所有已经订阅过的对象。 2.页面载入后目标对象很容易与观察者存在一种动态关联,增加了灵活性。 3.目标对象与观察者之间的抽象耦合关系能够单独扩展以及重用。 注意事项: 1.监听要在触发之前。 // 引入jquery ~(fu.原创 2021-05-20 00:08:55 · 75 阅读 · 0 评论 -
设计模式 —— 构造函数模式(2021/5/18)
概念 构造函数用于创建特定类型的对象——不仅声明了使用的对象,构造函数还可以接受参数以便第一次创建对象的时候设置对象的成员值。你可以自定义自己的构造函数,然后在里面声明自定义类型对象的属性或方法。 在JavaScript里,构造函数通常是认为用来实现实例的,JavaScript没有类的概念,但是有特殊的构造函数。通过new关键字来调用自定义的构造函数,在构造函数内部,this关键字引用的是新创建的对象。 拟物化理解 普通的门 -> 有花边和纹路的门 模式作用: 1.用于创建特定.原创 2021-05-18 23:18:40 · 170 阅读 · 0 评论 -
设计模式 —— 工厂模式(2021/5/17)
概念 工厂模式定义一个用于创建对象的接口,这个接口由子类决定实例化哪一个类。该模式使一个类的实例化延迟到了子类。而子类可以重写接口方法以便创建的时候指定自己的对象类型(抽象工厂)。 这个模式十分有用,尤其是创建对象的流程赋值的时候,比如依赖于很多设置文件等。并且,你会经常在程序里看到工厂方法,用于让子类类定义需要创建的对象类型。 拟物化理解 通过厂长,告诉我们内部的产品线需要做什么事情,我们不需要关心里面的流程,如果这个东西比如鞋子做的不好,我们可以自己去制定产品线,把原先的产品线覆盖掉 .原创 2021-05-18 21:33:52 · 54 阅读 · 0 评论 -
设计模式 —— 迭代器模式(2021/5/17)
概念 迭代器模式提供一种方法顺序访问一个聚合对象中各个元素,而又不需要暴露该方法中的内部表示。 eg 链条上的每一个小节 类似于jquery的each方法 模式作用: 1.为遍历不同的集合结构提供一个统一的接口,从而支持同样的算法在不同的集合结构上进行操作。 2.对于集合内部结果常常变化各异,我们不想暴露其内部结构的话,但又想让客户代码透明底访问其中的元素,这种情况下我们可以使用迭代器模式。 注意事项: 1.一般的迭代,我们至少要有2个方法,hasNext()和Next(),这.原创 2021-05-17 17:09:29 · 67 阅读 · 0 评论 -
设计模式 —— 单例模式(2021/5/16)
概念 单例就是保证一个类只有一个实例,实现的方法一般是先判断实例存在与否,如果存在直接返回,如果不存在就创建了再返回,这就确保了一个类只有一个实例对象。在JavaScript里,单例作为一个命名空间提供者,从全局命名空间里提供一个唯一的访问点来访问该对象。 eg: 开发商的房子没有门,就创建一个门然后再进入房间,如果有,则直接进入房间,无需创建新的门 ...原创 2021-05-16 23:40:03 · 89 阅读 · 0 评论 -
设计模式 —— 代理模式(2021/5/15)
概念 帮助别人做事 代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。代理模式使得代理对象控制具体对象的引用。代理几乎可以是任何对象∶文件,资源,内存中的对象,或者是一些难以复制的东西。 eg: 房东想卖房,但是没时间看,所以就找了中介代理,帮忙做这个交流,然后房东负责收钱就OK了。隐藏了对房东的直接访问 ...原创 2021-05-16 00:18:15 · 72 阅读 · 0 评论