ICO 控制反转
如果 Water 改用 MineralWater 矿泉水,不用改 CoffeeMaker 的代码,只要修改注入就行。
class OrdinaryWater {
boil() {
console.log("普通的水烧开了!");
}
}
class MineralWater {
boil() {
console.log("矿泉水烧开了!");
}
}
class OrdinaryCoffeeBean {
grind() {
console.log("咖啡豆磨好了!");
}
}
class CoffeeMaker {
constructor() {
this.water = new OrdinaryWater();
this.coffeeBean = new CoffeeBean();
}
makeCoffee() {
this.water.boil();
this.coffeeBean.grind();
console.log("咖啡做好了!☕");
}
}
// 3. 使用 CoffeeMaker
const maker = new CoffeeMaker();
maker.makeCoffee();