观察者模式允许定义对象之间的一对多依赖关系,以便当一个对象更改状态时,所有其依赖项都会得到通知并自动更新。
在此示例中,我们正在创建一个简单的类产品,其他类可以观察到注册 register() 方法中的更改。当某些内容更新时,notifyAll()方法将与所有观察者就这些更改进行通信。
class ObservedProduct { constructor() { this.price = 0; this.actions = []; } setBasePrice(val) { this.price = val; this.notifyAll(); } register(observer) { this.actions.push(observer); } unregister(observer) { this.actions.remove.filter(function (el) { return el !== observer; }); } notifyAll() { return this.actions.forEach( function (el) { el.update(this); }.bind(this) ); } } class Fees { update(product) { product.price = product.price * 1.2; } } class Profit { update(product) { product.price = product.price * 2; } } export { ObservedProduct, Fees, Profit };
完整的例子在这里? https://stackblitz.com/edit/vitejs-vite-kyucyd?file=main.js
结论
当更改一个对象的状态可能需要更改其他对象,并且实际的一组对象事先未知或动态更改时,请使用此模式。
希望您觉得它有帮助。感谢您的阅读。 ?
让我们联系吧!你可以在以下位置找到我:
以上是JavaScript 设计模式 - 行为 - 观察者的详细内容。更多信息请关注PHP中文网其他相关文章!