JavaScript设计模式之工厂方法

Mar 8, 2015

316

我们来看一个例子,使用Cache('local').set('username', 'wen')设置一个localStorage键为username,值为wen的本地缓存。

先来分析Cache('local').set('username', 'wen')这段代码,Cache('local')返回一个对象,然后调用对象的set方法。

我第一反应是采用一个闭包来生成对象,示例代码如下:

var Cache = (function(){
  var local = {
    set: function(key, value) {
      console.log('local: ' + key + ' => ' + value);
    }
  },
  session = {
    set: function(key, value) {
      console.log('session: ' + key + ' => ' + value);
    }
  };

  return function(type) {
    type = type || 'local';
    switch (type){
      case 'local' :
        return local;
      case 'session' : 
        return session;
      default: 
        return void 0;
    }
  };
}());
Cache('local').set('username', 'wen'); //local: 
Cache().set('username', 'wen'); //local: username => wen
Cache('session').set('username', 'wen'); //session: username => wen

在这个例子中,每次增加一个对象,还必须修改Cache对象返回的对象代码,代码的耦合性较高,我们可以采用工厂方法来对这些代码进行解耦。工厂方法的目的就是为了创建对象。

Wen's Blog

文章归档 » 文章标签 » 博主:吴文伟,Web开发爱好者,专注于前端开发,该博客用于记录和分享平时遇到的一些问题以及知识。

订阅

联系方式

链接