定义:由一个工厂对象决定创建某一正产品对象类的实例
理解:一个工厂根据传入的参数,动态的决定应该创建哪一个产品的实例。
eg:(一个运动工厂)
var SportFactory = function(name){ switch(name){ case "NBA": return new Basketball(); case "wordCup": return new Football(); case "FrenchOpen": return new Tennis(); } }
eg:(基类)
//篮球基类 var Basketball = function(){ this.intro = '篮球盛行于美国'; } Basketball.prototype = { getNumber:function(){ console.log("每个队伍需要5名队员"); } } //足球基类 var Football = function(){ this.intro = '足球在全世界都很流行'; } Football.prototype = { getNumber:function(){ console.log("每个队伍需要11名队员"); } } //网球基类 var Tennis = function(){ this.intro = '每年都有很多网球系列赛'; } Tennis.prototype = { getNumber:function(){ console.log("每个队伍需要1名队员"); } }
缺点:简单工厂类集中了所以对象的实例化,当系统中的产品类不断的增加,需要修改工厂类,并且增加判断条件,不利于系统的维护和扩展,只适用于创建少量类的情况下