
代码优化
正义的小豆
这个作者很懒,什么都没留下…
展开
-
JS设计模式
单例模式策略模式代理模式迭代器模式发布-订阅模式命令模式组合模式模板方法模式享元模式职责链模式中介者模式装饰者模式状态模式适配器模式...原创 2020-03-09 23:14:08 · 146 阅读 · 0 评论 -
JS适配器模式
适配器模式适配器模式的作用是解决两个软件实体间的接口不兼容的问题。使用适配器模式之后,原本由于接口不兼容而不能工作的两个软件实体可以一起工作。当我们试图调用模块或者对象的某个接口时,却发现这个接口的格式并不符合目前的需求, 则可以用适配器模式。例如 baiduMap 提供的显示地图的方法不叫 show 而叫display 呢?baiduMap 这个对象来源于第三方,正常情况下我们都不应该去改动...原创 2020-03-09 21:29:27 · 274 阅读 · 0 评论 -
JS状态模式
状态模式状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。例子:电灯状态的切换,按同一个键会依次出现弱光、强光、关灯。// OffLightState:var OffLightState = function (light) { this.light = light;};OffLight...原创 2020-03-09 21:25:37 · 304 阅读 · 0 评论 -
JS装饰者模式
装饰者模式这种给对象动态地增加职责的方式称为装饰者(decorator)模式。装饰者模式能够在不改变对象自身的基础上,在程序运行期间给对象动态地添加职责。用 AOP 装饰函数首先给出 Function.prototype.before 方法和 Function.prototype.after 方法:Function.prototype.before = function (beforefn...原创 2020-03-09 21:17:37 · 107 阅读 · 0 评论 -
JS中介者模式
中介者模式中介者模式的作用就是解除对象与对象之间的紧耦合关系。增加一个中介者对象后,所有的相关对象都通过中介者对象来通信,而不是互相引用,所以当一个对象发生改变时,只需要通知中介者对象即可。例子:泡泡堂游戏function Player(name, teamColor) { this.name = name; // 角色名字 this.teamColor = teamColo...原创 2020-03-09 21:11:11 · 166 阅读 · 0 评论 -
JS职责链模式
职责链模式职责链模式的定义是:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。主要是代替if-else结构例子把函数包装进职责链节点,我们定义一个构造函数 Chain ,在 new Chain 的时候传递的参数即为需要被包装的函数, 同时它还拥有一个实例属性 this.successor ,表示在...原创 2020-03-09 21:08:37 · 136 阅读 · 0 评论 -
JS享元模式
享元模式内部状态与外部状态内部状态存储于对象内部。 内部状态可以被一些对象共享。 内部状态独立于具体的场景,通常不会改变。 外部状态取决于具体的场景,并根据场景而变化,外部状态不能被共享。内部状态与外部状态分离例子:通过plugin或flash两种方式上传文件l首先会获得需要的特定内部状态的对象,如果已在createdFlyWeightObjs对象属性中,则直接返回,否则ne...原创 2020-03-09 21:06:37 · 173 阅读 · 0 评论 -
JS模板方法模式
模板方法模式 ~~~~~~ 模板方法模式是一种典型的通过封装变化提高系统扩展性的设计模式。在传统的面向对象语言中,一个运用了模板方法模式的程序中,子类的方法种类和执行顺序都是不变的,所以我们把这部分逻辑抽象到父类的模板方法里面。而子类的方法具体怎么实现则是可...原创 2020-03-09 20:55:44 · 167 阅读 · 0 评论 -
JS组合模式
组合模式 ~~~~~~~ 组合模式将对象组合成树形结构,以表示“部分整体”的层次结构。 除了用来表示树形结构之外,组合模式的另一个好处是通过对象的多态性表现,使得用户对单个对象和组合对象的使用具有一致性, &...原创 2020-03-09 20:53:29 · 191 阅读 · 0 评论 -
JS命令模式
命令模式 ~~~~~~~ 命令模式是最简单和优雅的模式之一,命令模式中的命令(command)指的是一个执行某些特定事情的指令。 ~~~~~~~&nb...原创 2020-03-09 20:49:07 · 224 阅读 · 0 评论 -
JS发布 — 订阅模式
发布 — 订阅模式 ~~~~~~~ 发布 — 订阅模式又叫观察者模式,它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知。在 JavaScript开发中,我们一般用事件模型来替代传统的发布 ...原创 2020-03-09 20:41:11 · 142 阅读 · 0 评论 -
JS迭代器模式
迭代器模式内部迭代器在调用的时候非常方便,外界不用关心迭代器内部的实现,跟迭代器的交互也仅仅是一次初始调用,但这也刚好是内部迭代器的缺点。如forEach(),外部迭代器增加了一些调用的复杂度,但相对也增强了迭代器的灵活性,我们可以手工控制迭代的过程或者顺序。可以参考一下es6的Iterator...原创 2020-03-09 20:15:16 · 141 阅读 · 0 评论 -
JS代理模式
代理模式代理模式的关键是,当客户不方便直接访问一个对象或者不满足需要的时候,提供一个替身对象来控制对这个对象的访问,客户实际上访问的是替身对象。替身对象对请求做出一些处理之后,再把请求转交给本体对象。虚拟代理把一些开销很大的对象,延迟到真正需要它的时候才去创建。单一职责原则指的是,就一个类(通常也包括对象和函数等)而言,应该仅有一个引起它变化的原因。如果一个对象承担了多项职责,就意味着这个对...原创 2020-03-09 20:11:06 · 126 阅读 · 0 评论 -
JS策略模式
策略模式策略模式的定义是:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。例子1:很多公司的年终奖是根据员工的工资基数和年底绩效情况来发放的。例如,绩效为 S的人年终奖有 4倍工资,绩效为 A的人年终奖有 3倍工资,而绩效为 B的人年终奖是 2倍工资。假设财务部要求我们提供一段代码,来方便他们计算员工的年终奖。var strategies = { "S": func...原创 2020-03-09 20:04:11 · 135 阅读 · 0 评论 -
JS单例模式
单例模式把判断单例的逻辑封装在 getSingle函数内部,创建对象的方法 fn 被当成参数动态传入 getSingle 函数:(想要获得特定的元素只需要传入对应的fn就可以了,而无需改变getSinglel函数)var getSingle = function(fn) { var result; return function() { return resul...原创 2020-03-09 20:02:31 · 148 阅读 · 0 评论 -
设计原则与js编程技巧
依赖倒置原则高层模块不应该依赖低层模块,两者都应该依赖抽象抽象不应该依赖细节细节应该依赖抽象也可以说高层模块,低层模块,细节都应该依赖抽象每一个逻辑的实现都是由颗粒原子逻辑组成的,颗粒原子逻辑就是低层模块,而颗粒原子逻辑组成的模块就是高层模块。在java语言中,抽象就是接口或抽象类,两都都是不能直接被实例化的,细节就是实现类,实现接口或继承抽象类而产生的类就是细节,两者都...原创 2020-03-09 19:48:38 · 233 阅读 · 0 评论