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

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

تم النشر بتاريخ 2024-11-01
تصفح:626

JavaScript Design Patterns - Behavioral - Strategy

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

في هذا المثال، لدينا مجموعة من الخصومات التي يمكن تطبيقها على عربة التسوق. يمكننا تمرير الوظيفة التي سنطبقها على المنشئ، وبهذه الطريقة، نغير المبلغ المخصوم.

class ShoppingCart {
  constructor(discount) {
    this.discount = discount;
    this.amount = 0;
  }

  checkout() {
    return this.discount(this.amount);
  }

  setAmount(amount) {
    this.amount = amount;
  }
}

function guest(amount) {
  return amount;
}

function regular(amount) {
  return amount * 0.9;
}

function premium(amount) {
  return amount * 0.8;
}

export { ShoppingCart, guest, regular, premium };

المثال الكامل هنا؟ https://stackblitz.com/edit/vitejs-vite-tygwh3?file=strategy.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-strategy-152d?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3