Notes

工厂模式

示例代码

// 调用方法
var golf = CarFactory.make('Compact');
var vento = CarFactory.make('Sedan');
var touareg = CarFactory.make('SUV');

// 实现

// 工厂构造函数
function CarFactory() {}
CarFactory.prototype.info = function() {
    console.log('...');
};

// 造车的函数
CarFactory.make = function(type) {
    var carType = type;
    var car;
    
    // 让每种类型的车的原型都有一个打印自身信息的方法
    CarFactory[carType].prototype = new CarFactory();
    
    // 造车
    car = new CarFactory[carType]();
};

// 具体每种车的制作方法
CarFactory.Compact = function() {
    // ...
};

CarFactory.Sedan = function() {
    // ...
};

CarFactory.SUV = function() {
    // ...
};

CarFactory[carType] 这行代码,其实就是通过一个读取属性的方式来获取每种类型的车,对应的制作方法

所以,这一种实现,核心就是,让每一个具体的类的构造方法,成为工厂的一个属性