javascript设计模式简单介绍之【工厂模式】

时间:2021-04-28 14:47:33

工厂模式分为两种,一种是简单工厂模式。另一种称之为工厂模式。

简单工厂模式是使用一个外部的单体或者静态方法来生成实例。

而工厂模式使用子类来决定内部成员要实现那个具体的类的实例。

工厂模式要求被具体实现的类,必须提供相同的接口。

下面我们将通过一段代码来讲述一个简单工厂模式的实现。

function myMode(){

}
myMode.prototype = {
  create:function(){
    var mode = createmode.create(mode);
    mode.xxx();//可以对返回的mode执行任何你想要的操作
    return mode;
  }
}

var createdmode = (function(){  //一个单例
  return {
    creaet:function(mode){       var tmpMode;       switch(mode){         case 'mode1':           tmpMode = new mode1();           break;         case 'mode2':           tmpMode = new mode2();           break;         default:           tmpMode = new defamode();           break;       }       checkMode(mode,[xxx,xxx,xxx,xxx,xxx]);//checkMode的作用是检查mode是否实现了后面的[xxx]方法,如果没实现将抛出异常       return tpmMode;     }
  } })();
function checkMode(obj,methods){   if(!(typeof obj == 'object')){     throw new Error("error");   }   for(var i=0,len=methods.length;i<len;i++){     var method = methods[i];     if(!obj[method] || typeof object[method] !== 'function'){       throw new Error('error');     }   } }

通过上面的代码,便实现了简单工厂模式。首先我们有一个myMode,他有一个create方法,这个方法将返回一个mode。

这个mode可以是任何对象。因为它是由一个外部单例所创造返回的mode。如果你想改变它,可以在外部单例里加入更多的case。

只要它实现了规定的接口,那么它就是符合的工厂模式的。是可以被myMode直接使用的。这一样以来,就可以把所有的mode集中在一起管理。

想要添加或者更改mode也变得容易。好了,简单工厂模式到此也就结束了。

下面是今天在某个群讨论时,看到的一段对工厂模式的描述的比较好的话。便顺手摘抄了下来

"后宫三千佳丽等待侍寝,大家都有名牌,一个太监把牌子拿上来,皇上翻,翻中一牌子给太监,太监去调这个女人(也许是男人),这个太监就相当于工厂,皇上给他参数,他根据参数去调用,但具体侍寝的事由后宫去实现,有的KJ,有的是XT,有的是TJ,有的是GJ,有的是XJ,各不相同"

不要问我那些字母代表什么意思,我想大家都懂的~~~~

不好意思,刚刚创建单例那里有点错误,已修正。