observer パターンを使用すると、オブジェクト間の 1 対多の依存関係を定義できるため、1 つのオブジェクトの状態が変化すると、そのすべての依存オブジェクトが通知され、自動的に更新されます。
この例では、他のクラスが 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-kycyd?file=main.js
結論
このパターンは、1 つのオブジェクトの状態を変更するために他のオブジェクトの変更が必要になる可能性があり、実際のオブジェクトのセットが事前に不明であるか動的に変化する場合に使用します。
お役に立てば幸いです。読んでいただきありがとうございます。 ?
つながろう!あなたは私を見つけることができます:
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3