工厂模式
简单工厂模式是由一个工厂对象创建出某一种产品类的实例
通过点咖啡的例子, 来说明工厂模式.
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的返回的就是一个工厂模式.