01-Command Pattern 命令模式-vanilla篇
使用命令模式,可以将执行某个任务的对象与调用该方法的对象解耦。 假设有一个外卖配送平台。用户可以下单、跟踪和取消订单。 class OrderManager() { constructor() { this.orders = [] } placeOrder(order, id) { this.orders.push(id) return `You have successfully ordered ${order} (${id})`; } trackOrder(id) { return `Your order ${id} will arrive in 20 minutes.` } cancelOrder(id) { this.orders = this.orders.filter(order => order.id !== id) return `You have canceled your order ${id}` } } 在 OrderManager 类上,可以访问 placeOrder 、 trackOrder 和 cancelOrder 方法。直接使用这些方法将是完全可行的。 但是,直接在 manager 实例上调用方法也有缺点。我们可能会决定稍后重命名某些方法,或者改变某些方法的功能。 假设现在将其重命名为 addOrder ,而不是 placeOrder ,这意味着我们必须确保代码库中的没有任何位置调用 placeOrder 方法,这种场景在大型应用程序中可能非常棘手。相反,我们希望将方法与 manager 对象解耦,并为每个命令创建单独的命令函数。...