工厂模式(Factory)
工厂模式一般分为3种:简单工厂、工厂方法和抽象工厂。
很少能用到抽象工厂,除非是大型项目(我也没有用过,这里就不讨论了^_^)
概念大家可以百度一下,今天我要给大家介绍的是工厂方法模式
实现
这里我们通过一个生产汽车的车间为例:
function CarMaker(){};
CarMaker.prototype.config = function () {
console.log('i have ' + this.doors + ' doors');
}
CarMaker.factory = function (type) {
var newcar;
if(typeof CarMaker[type] !== 'function') {
console.log('我们不生产这种类型的车');
return;
}
if(typeof CarMaker[type].prototype.config !== 'function') {
CarMaker[type].prototype = new CarMaker();
}
newcar = new CarMaker[type]();
return newcar;
}
CarMaker.Compact = function () {
this.doors = 4;
}
CarMaker.Convertible = function () {
this.doors = 2;
}
CarMaker.SUV = function () {
this.doors = 24;
}
var suv = CarMaker.factory('SUV');
suv.config();
工厂方法的好处:
1、添加新的车型时,不需要更改factory方法。
2、将new关键字放入factory, 避免实例化对象的时候使用new。