Javascript设计模式

  • 单例模式
单例就是保证一个类只有一个实例,实现的方法一般是先判断实例存在与否,如果存在直接返回,如果不存在就创建了再返回,这就确保了一个类只有一个实例对象。
如果一个函数需要对一个外部变量进行处理(多人协作的时候务必遵守全局变量的初始状态的保持)if( 变量 有的话):{return 变量;}else(没有的话){为了保持外部变量初始状态的维持,在内部创建一个局部变量var 变量,然后创建闭包,将函数执行结果赋值给这个内部变量。}作用:创建闭包之后,内部变量很好的代替了全部变量实现效果,而且函数执行完毕之后,内部变量自动消失,保持了全局变量的初始化状态,完美~
  • 简单工厂模式
简单工厂就是一个类的所有实例对象都有相同的接口,每个实例对象之间的不同依靠后期实例化类之后对象自身进行设计。构造函数就是一个典例。
构造函数中的this指向的是实例化出来的每个对象。
构造函数继承的时候特别不方便,每个实例都共享构造函数里面的所有成员属性和成员方法。
一般情况下构造函数函数名建议大写,以示区别。
  • 观察者模式
【Javascript设计模式】观察者模式(也叫做发布者-订阅者模式)js中的Dom事件是典例。『按钮点击alert123的一个案例』点击相应函数已经被写好,只有按钮被点击的时候才会去产生调用函数的指令。好莱坞名言『不要给我打电话, 我会给你打电话』。也就是一个复杂的东西被很好的分解成几个部分,这几个部分之间外部没有紧密的联系,唯一的联系只是一个『信号』。订阅者不需要去管发布者,就像这几个部分之间的关系一样。
  • 适配器模式
适配两个接口,将两个模块之间很好的做了联系,相关的变量,方法进行转换,var my.变量 = function 适配器(he.变量)
  • 代理模式
是将对一个对象的访问,交给另一个代理对象去操作
典例是因为性能问题使用代理模式的机会是非常多的。比如频繁的访问dom节点, 频繁的请求远程资源. 可以把操作先存到一个缓冲区, 然后自己选择真正的触发时机.
  • 外观模式
外观模式为函数和方法提供一个高级接口,更加便于外界的调用
一个典型例子:
var stopEvent = function( e ){//同时阻止事件默认行为和冒泡 e.stopPropagation(); e.preventDefault(); }

  • 策略模式
不是太懂。
但是典例是一个表单验证的功能,需要同时验证长度,类型,敏感词等。将每种验证方法都用策略模式封装起来,使用的时候仅仅提供每种策略的名字。
  • 模板方法模式
模板方法强调父类去调用子类,而非反向的控制。父类固定的模板,使得子类去完善特定的功能,然后父类调用子类。
  • 中介模式
中介模式Controler,ABC通过W很好的与DEF联系起来,但是ABC对DEF并没有了解,全靠着W保持对双方关系的维护。与代理模式的不同是代理模式通过W将A与B联系起来,A必然知道B的一切。
  • 迭代器模式
迭代式模式提供一种方法来对一个集合里面的每个元素进行一定的操作,但是又不对外暴漏方法里面的表示。
  • 组合模式
组合模式相当于一个大树,操作最上层的接口,对下层所有的成员进行相同的操作。与外观模式不同的是比外观模式对内部对象的操作更具有统一性,并没有指明内部对象的具体名字。
  • 备忘录模式
备忘录模式经常用于页面数据的缓存,比如一个分页应用的控件,先去检测先前的数据有没有缓存在用户的浏览器中,有的话直接调用,没有的话在进行请求数据。
  • 职责链模式
职责链模式经常用于一级一级的请求。js中的事件冒泡就是作为一个职责链来实现的。一个事件在某个节点上被触发,然后向根节点传递, 直到被节点捕获。
  • 享元模式
共享嘛~

    推荐阅读