"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > أنماط تصميم جافا سكريبت - السلوكية - المراقب

أنماط تصميم جافا سكريبت - السلوكية - المراقب

تم النشر بتاريخ 2024-08-18
تصفح:866

JavaScript Design Patterns - Behavioral - Observer

يسمح نمط المراقب بتعريف تبعية واحد لأكثر بين الكائنات بحيث يتم إخطار جميع العناصر التابعة لها وتحديثها تلقائيًا عندما يتغير كائن واحد في حالته.

في هذا المثال، نقوم بإنشاء منتج فئة بسيط يمكن للفئات الأخرى مراقبته عند التسجيل حول التغييرات في طريقة 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

خاتمة

استخدم هذا النمط عندما تتطلب التغييرات في حالة أحد الكائنات تغيير كائنات أخرى، وتكون المجموعة الفعلية من الكائنات غير معروفة مسبقًا أو تتغير ديناميكيًا.


آمل أن تجدها مفيدة. شكرا على القراءة. ?

دعونا نتواصل! تجدوني على:

  • الوسيط: https://medium.com/@nhannguyndevjs/
  • تطوير: https://dev.to/nhannguyendevjs/
  • هاشنود: https://nhannguyen.hashnode.dev/
  • لينكد إن: https://www.linkedin.com/in/nhannguyendevjs/
  • X (تويتر سابقًا): https://twitter.com/nhannguyndevjs/
  • اشتري لي قهوة: https://www.buymeacoffee.com/nhannguyendevjs
بيان الافراج تم نشر هذه المقالة على: https://dev.to/nhannguyendevjs/javascript-design-patterns-behavioral-observer-g70?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3