随笔分类 -  JavaScript设计模式

从JavaScript基础逐渐开展而来。
摘要:介绍 责任链模式(Chain of responsibility)是使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止。 请求以后,从第一个对象开始,链中收到请求的对象要么亲自处理它,要么转发给链中的下一个候选者 阅读全文
posted @ 2017-10-21 21:35 WFaceBoss 阅读(2537) 评论(0) 推荐(0)
摘要:代理模式的定义,代理是一个对象(proxy)用它来控制目标对象的访问。为此他要是先与目标对象相同的接口,但是他不同于装饰者模式,它对目标对象不进行任何修改,它的目的在于延缓"复杂"对象的初始化时间。这样可以在用到这个目标对象的时候再初始化他(对于单例来讲更是重要)。 代理模式有两种分类: (1)普通 阅读全文
posted @ 2017-10-21 11:20 WFaceBoss 阅读(613) 评论(0) 推荐(0)
摘要:效果为, 步骤二,为对象(执行者)建立命令访问库 意思是可以通过extcute方法访问到addFlow方法 步骤四,客户端 发出者 步骤五,实例化客户端 这样html中的事件就可以起作用了。 在这里我们使用插件来让其功能支持自定义的键盘事件,插件名称为:keymaster.js 首先,如html中一 阅读全文
posted @ 2017-10-21 10:13 WFaceBoss 阅读(1016) 评论(0) 推荐(0)
摘要:(2)扩展一个发布者的发布消息的方法(推模式) (3)扩展公共订阅的函数,和取消订阅的函数 订阅的函数: (5)发布部分 (5.1)使用门面模式--针对各浏览器的事件绑定兼容问题 (5.2)创建主应用函数 最后,订阅者界面 效果为: (1)cctv模块的 (2)gfb的效果为: 总结: 1.支持简单 阅读全文
posted @ 2017-10-20 23:34 WFaceBoss 阅读(533) 评论(0) 推荐(0)
摘要:通过两个例子的对比来凸显享元模式的特点:享元模式是一个为了提高性能(空间复杂度)的设计模式,享元模式可以避免大量非常相似类的开销。 第一实例,没有使用享元模式,计算所花费的时间和空间使用程度。 要求为:有一个城市要进行汽车的登记 (1)汽车类 (2)使用装饰者模式--计算函数的耗时 (3)具体的实例 阅读全文
posted @ 2017-10-19 21:44 WFaceBoss 阅读(450) 评论(0) 推荐(0)
摘要:这里我们通过需求逐渐引出装饰者模式。 下面是一个关于几代汽车的不同逐渐体现装饰者模式的。 首先,我们先引入一个接口文件 目的为检验实现类是否完全实现接口中的方法,代码如下, (1)统一接口 (2)实现接口并内部检验 (3)第一个汽车实例 现在我们开始有一个新的需求,汽车需要有附属的产品如: 音响(K 阅读全文
posted @ 2017-10-19 18:02 WFaceBoss 阅读(336) 评论(0) 推荐(0)
摘要:(3)服务端两个数的加法 (4)客户端调用服务端代码 二,现在有一个要求就是,需要换一个类库,但是客户端的程序不希望有大的改动。 (1)依然继承相同接口的基础上,类库为 此时我们如果需要使用该类库的话,客户端又不能该,那么用和之前的调用方式: 是完全不符合客户端的要求的。为了在保证客户端不变的情况下 阅读全文
posted @ 2017-10-19 14:57 WFaceBoss 阅读(827) 评论(0) 推荐(0)
摘要:对于组合设计模式: (1)统一接口 (2)定义组合类 (3)定义叶子类 (4)应用 将学校,班级,组,学生关联起来 (5)客户端调用API,只需要简单的安排去上课即可,也就是客户端只需要写去上课的代码即可 总结, 阅读全文
posted @ 2017-10-18 22:30 WFaceBoss 阅读(291) 评论(0) 推荐(0)
摘要:(2)班级类 (3)组类 (4)学生类 其次,测试需满足如下为: 最后,开学了,我们准备按照要求去上课吧, 安排为:一班一组去上课 学校-->班级-->组-->学生 最后,我只是想安排一个都要写这么多的代码,那如何是一个学校有上千个班级,那么要疯了。 阅读全文
posted @ 2017-10-18 22:17 WFaceBoss 阅读(313) 评论(0) 推荐(0)
摘要:外部与一个子系统的通信必须通过一个系统的一个门面对象进行,这就是门面模式。 门面模式具备如下两个角色: 1. 门面角色 客户端可以调用这个角色方法,此角色中有子系统的应用(知晓相关的(一个或多个)子系统的功能和责任)。本角色会将所有从客户端发来的请求委派到相应的子系统去。 2. 子系统角色 可以同时 阅读全文
posted @ 2017-10-17 17:48 WFaceBoss 阅读(487) 评论(0) 推荐(0)
摘要:针对该模式的例子现在不是很理解,写下来慢慢熟悉。 们要构建一个队列,队列里存放了很多ajax请求,使用队列(queue)主要是因为要确保先加入的请求先被处理。任何时候,我们可以暂停请求、删除请求、重试请求以及支持对各个请求的订阅事件。 (1)异步请求的函数封装 (2)建立一个简单的观察者模式 总结 阅读全文
posted @ 2017-10-16 22:40 WFaceBoss 阅读(391) 评论(0) 推荐(0)
摘要:1.使用情况 (1)事件的监控 #1,利用页面的button来选择宠物的例子(思路) #2,addEvent函数 总结:该种方式对于单元测试很难进行 改进为用简单的桥梁模式来解决 #1,后台中的api #2,桥梁 总结:这种做法使API和展现层完全分离,API和展现层可以灵活的变动。 (2)特权函数 阅读全文
posted @ 2017-10-16 10:28 WFaceBoss 阅读(400) 评论(0) 推荐(0)
摘要:第一步,Ajax操作接口(目的是起一个接口检测作用) (1)引入接口文件 第二步,实例化一个可以具体的ajax接口 第三步,针对接口的ajax实现类 (1)定义一个空类 (2)在该空类上直接扩展原型 实现接口里面的方法 第三步,使用检验 (1)实例化对象 (2)接口检验实现类是否完全实现接口中的方法 阅读全文
posted @ 2017-10-16 09:27 WFaceBoss 阅读(588) 评论(0) 推荐(1)
摘要:一,介绍 工厂模式创建对象(视为工厂里的产品)时无需指定创建对象的具体类。 工厂模式定义一个用于创建对象的接口,这个接口由子类决定实例化哪一个类。该模式使一个类的实例化延迟到了子类。而子类可以重写接口方法以便创建的时候指定自己的对象类型。 在这里将工厂简单分为三种: (2)继承文件 (4)各个实现类 阅读全文
posted @ 2017-10-13 15:36 WFaceBoss 阅读(7934) 评论(2) 推荐(0)
摘要:1、什么是链式调用? 这个很容易理解,例如 一般的函数调用和链式调用的区别:链式调用完方法后,return this返回当前调用方法的对象。 首先,我们先来看看一般函数的调用方式 (1)先创建一个简单的类 (2)使用方式:一般的调用方式 (3)总结,该种方式有一个弊端就是:多次重复使用一个对象变量 阅读全文
posted @ 2017-10-12 18:46 WFaceBoss 阅读(972) 评论(0) 推荐(0)
摘要:单例模式也称为单体模式,其中: 1,单体模式用于创建命名空间,将系列关联的属性和方法组织成一个逻辑单元,减少全局变量。 逻辑单元中的代码通过单一的变量进行访问。 2,三个特点: ① 该类只有一个实例; ② 该类自行创建该实例,即在该类内部创建自身的实例对象; ③ 向整个系统公开这个实例接口 3,单体 阅读全文
posted @ 2017-10-12 12:23 WFaceBoss 阅读(370) 评论(0) 推荐(0)
摘要:一,首先,为什么要使用封装? 这是从信息的角度出发的,信息的隐藏是最终的目的,而封装只不过是实现隐藏的一种方法。 这里我们需要明白一点就是:类的定义有如下的三种方式: (第一种)门户大开型方式 (第二种)用命令规范区别私有和公有的方式 (第三种)闭包 现在详细描述一下每一种类的定义方式: 针对第一种 阅读全文
posted @ 2017-10-11 20:46 WFaceBoss 阅读(1378) 评论(0) 推荐(1)
摘要:JavaScript中实现接口的方法有三种: 第一种,使用注释的方法实现接口 (2)用注释来注明实现的接口 总结: (3)检验属性的方法 (4)接口与实现类的配合实现 (5)使用 总结一下,该种方式只是简单判断了在实现时有没有传递与属性中相同的接口名称,而对于方法是否实现没有做验证。 3,应用 3. 阅读全文
posted @ 2017-10-10 20:51 WFaceBoss 阅读(1389) 评论(5) 推荐(1)
摘要:一,继承 第一种方式:类与被继承类直接耦合度高 1,首先,准备一个可以被继承的类(父类),例如 2,然后,有个需要继承父类的子类 说明一下: (1)call方法可以将一个函数的对象上下文从初始化变成由this来决定 一个类去控制另一个类 (2)Teacher类去控制 Person类 用Teacher 阅读全文
posted @ 2017-10-10 14:35 WFaceBoss 阅读(1020) 评论(2) 推荐(0)
摘要:如上图,SuperType是是一个函数,右侧的方框就是它的原型。 (2.2)第二种扩展方式,隐示扩展,通过__proto__属性。 2,简单方式实现继承 使用图梳理一下原理: 索引的变化: (1) 阅读全文
posted @ 2017-10-08 11:17 WFaceBoss 阅读(322) 评论(0) 推荐(0)