Skip to main content

工厂模式

工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。

Demo

构造一个简单的汽车工厂来生产汽车

// SuzukiCar 汽车工厂
function SuzukiCar(color){
this.color = color
this.brand = 'Suzuki'
}

// HondaCar 汽车工厂
function HondaCar(color){
this.color = color
this.brand = 'HondaCar'
}

// BMWCar 汽车工厂
function BMWCar(color){
this.color = color
this.brand = 'BMWCar'
}

// 汽车品牌枚举
const BRANDS = {
suzuki:1,
honda:2,
bmw:3
}

// 汽车加工工厂
function CarFactory() {
this.create = (brand,color) => {
switch (brand) {
case BRANDS.suzuki:
return new SuzukiCar(color)
break;
case BRANDS.honda:
return new HondaCar(color)
break;
case BRANDS.bmw:
return new BMWCar(color)
break;
default:
break;
}
}
}
const carFactory = new CarFactory();

const cars = [];
cars.push(carFactory.create(BRANDS.suzuki, 'brown'));
cars.push(carFactory.create(BRANDS.honda, 'grey'));
cars.push(carFactory.create(BRANDS.bmw, 'red'));

/*
[
0: SuzukiCar {color: 'brown', brand: 'Suzuki'}
1: HondaCar {color: 'grey', brand: 'HondaCar'}
2: BMWCar {color: 'red', brand: 'BMWCar'}
]
*/

使用工厂模式之后,不再需要重复引入一个个构造函数,只需要引入工厂对象就可以方便的创建各类对象。