يسمح نمط المراقب بتعريف تبعية واحد لأكثر بين الكائنات بحيث يتم إخطار جميع العناصر التابعة لها وتحديثها تلقائيًا عندما يتغير كائن واحد في حالته.
في هذا المثال، نقوم بإنشاء منتج فئة بسيط يمكن للفئات الأخرى مراقبته عند التسجيل حول التغييرات في طريقة 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
خاتمة
استخدم هذا النمط عندما تتطلب التغييرات في حالة أحد الكائنات تغيير كائنات أخرى، وتكون المجموعة الفعلية من الكائنات غير معروفة مسبقًا أو تتغير ديناميكيًا.
آمل أن تجدها مفيدة. شكرا على القراءة. ?
دعونا نتواصل! تجدوني على:
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3