gistfile1.txt js常用14种设计模式 单例模式 策略模式 单例模式的定义:保证一个类仅有一个实例,并提供一个全局访问的点。 单例模式是一种常用的设计模式,有一些对象我们还需要一个
js常用14种设计模式 单例模式
策略模式
单例模式的定义:保证一个类仅有一个实例,并提供一个全局访问的点。 单例模式是一种常用的设计模式,有一些对象我们还需要一个,如线程池,全局的缓存,浏览器中的window。 情景交互: 在js中我们点击登录按钮的时候页面上会出现一个登录窗口,这个窗口是唯一的,无论点击多少次登录按钮,都只会弹出这一个弹窗。 eg:利用闭包实现简单的单例模式 var Singleton = (function () { var insrance = null; // 用来标志是否被创建了 (通过闭包可以在函数内部维持住 insrance ) return function () { if (insrance) { // 已经创建 直接返回 return insrance } else { // 没有创建创建对象 return insrance = (function () { return 1 console.log(i) }) } } })() console.log(Singleton()()) 惰性单例 在需要的时候才创建对象的实例,惰性单例是,单例模式的重点,在上面的实现,都是在调用代码的时候才创建(基于类的单例模式),而不是在页面加载好的时候就被创建 实例是,WebQQ,介绍全局变量结合实现惰性单利 // 惰性代理的实现 遵循的原则单一原则,可以创建 div iframe 或者 script // 把创建实例的职责和管理单例的职责分别放在两个方法里面,这两个可以相互不受影响 var getSingle = function(fn) { var result; return function() { // 这里的this指的是 window // 将创建单例和具体的逻辑分离 fn是具体的逻辑函数 return result || (result = fn.apply(this, arguments)) } }策略模式: 定义一系列的算法,把他们一个一个封装起来,使他们可以相互替换 简单的demo