Skip to content

工厂模式

说明

  • 定义创建对象的接口,让子类决定实例化哪个类
  • 不关心过程, 只需要结果
  • 应用场景: 框架设计、跨平台UI组件创建

使用

ts
// 汽车类型
enum CarType {
  BMW,
  Audi,
  Benz,
}

class Car {
  constructor(public name: string) {}
  // 工厂方法
  static create(type: CarType): Car {
    let car: Car;
    switch (type) {
      case CarType.BMW:
        car = new BWMCar("宝马");
        break;
      case CarType.Audi:
        car = new BWMCar("奥迪");
        break;
      case CarType.Benz:
        car = new BWMCar("奔驰");
        break;
    }
    return car;
  }
}

class BWMCar extends Car {}
class AudiCar extends Car {}
class BenzCar extends Car {}

const bmw = Car.create(CarType.BMW)
const audi = Car.create(CarType.Audi)
const benz = Car.create(CarType.Benz)