工厂模式
工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。
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'}
]
*/
使用工厂模式之后,不再需要重复引入一个个构造函数,只需要引入工厂对象就可以方便的创建各类对象。