【设计模式】创建型模式-工厂模式

工厂模式(Factory Pattern)

工厂模式是一个可以批量产出特定场景下“需求”的总承,只需要知道输入的**“原材料**”应该是什么,然后得到与原材料对应的“成品”。

工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象,用工厂方法代替new操作的一种模式。

示例:

class SuzukiCar{
    constructor(color){
        this.color = color;
        this.brand = 'Suzuki';
    }
}
class HondaCar{
    constructor(color){
        this.color = color;
        this.brand = 'Honda';
    }
}
class BMWCar{
    constructor(color){
        this.color = color;
        this.brand = 'BMW';
    }
}

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

class CarFactory{
    create(brand, color){
        switch(brand){
            case BRANDS.suzuki:
                return new SuzukiCar(color);
            case BRANDS.honda:
                return new HondaCar(color);
            case BRANDS.bmw:
                return new BMWCar(color);
            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'));

function say() {
    console.log(`Hi, I am a ${this.color} ${this.brand} car`);
}
for (const car of cars) {
    say.call(car);
}

小结:

  1. 构造函数和创建者分离,对new操作进行封装
  2. 符合开放封闭原则

猜你喜欢

转载自blog.csdn.net/qq_38987146/article/details/117807144