JS设计模式01(简易) 工厂模式

84 阅读1分钟

工厂模式

简单工厂模式是由一个工厂对象创建出某一种产品类的实例

通过点咖啡的例子, 来说明工厂模式.

 class Coffee {
      constructor(name) {
        this.name = name
      }
    }
    class AmericanoCoffee extends Coffee {}

    class LatteCoffee extends Coffee {}

    class CappuccinoCoffee extends Coffee {}

    class CafeFactory {
      static order(name) {
        switch (name) {
          case 'Americano':
            return new AmericanoCoffee('美式咖啡')
          case 'Latte':
            return new LatteCoffee('拿铁')
          case 'Cappuccino':
            return new CappuccinoCoffee('卡布咖啡')
          default:
            throw new Error('没有此类咖啡')
        }
      }
    }
    console.log(CafeFactory.order('Americano'))
    console.log(CafeFactory.order('Latte'))
    console.log(CafeFactory.order('Cappuccino'))

缺陷: 不符合开发--封闭原则, 如果要添加新类型的coffee需要修改switch判断

场景: jQuery的返回的就是一个工厂模式.