TGViewer
️ CodeNight | آموزش برنامه نویسی ️ CodeNight | آموزش برنامه نویسی @codenight_ir · 850 subscribers
Post #78 252
الگوی طراحی Strategy: وقتی if/else شما را له می‌کند 🎯

وقتی توی کدت به تابعی می‌رسی که پر از if/else یا switch-case هست و هر بار رفتار متفاوتی اجرا می‌کنه (مثلاً روش‌های مختلف پرداخت، الگوریتم‌های مختلف مرتب‌سازی، یا استراتژی‌های مختلف تخفیف)،

احتمالاً وقتشه سراغ الگوی Strategy بری.
ایده اصلی ساده است:
به‌جای اینکه منطق تصمیم‌گیری رو توی یک کلاس یا تابع بزرگ قایم کنی، هر رفتار رو توی یک کلاس جدا (یک «استراتژی») پیاده‌سازی می‌کنی که همه از یک قرارداد مشترک (interface) پیروی می‌کنن. کلاس اصلی فقط یکی از این استراتژی‌ها رو نگه می‌داره و در زمان اجرا صداش می‌زنه، بدون اینکه بدونه دقیقاً چه الگوریتمی پشتش هست.
فایده‌اش کجاست؟ اضافه کردن یک روش پرداخت جدید یا یک الگوریتم تخفیف جدید یعنی فقط یک کلاس جدید بنویسی، بدون دست‌زدن به کد قبلی. این دقیقاً همون اصل Open/Closed از SOLID هست:

باز برای توسعه، بسته برای تغییر.
یک مثال ساده با تخفیف:

interface DiscountStrategy {
apply(price: number): number;
}

class NoDiscount implements DiscountStrategy {
apply(price: number) { return price; }
}

class PercentageDiscount implements DiscountStrategy {
constructor(private percent: number) {}
apply(price: number) {
return price * (1 - this.percent / 100);
}
}

class Cart {
constructor(private strategy: DiscountStrategy) {}
checkout(price: number) {
return this.strategy.apply(price);
}
}

const cart = new Cart(new PercentageDiscount(20));
console.log(cart.checkout(100)); // 80

یک نکته: Strategy رو با Factory اشتباه نگیر؛ Factory برای ساختن آبجکت‌هاست، ولی Strategy برای انتخاب رفتار (الگوریتم) در زمان اجراست. خیلی وقت‌ها هم این دو کنار هم استفاده می‌شن.


#برنامه_نویسی #DesignPatterns
#طراحی_نرم‌افزار #TypeScript #Clean_Code

کانال آموزشی کدنایت | آموزش برنامه نویسی

🆔 https://t.me/codenight_ir
  • 👍 5
  • ❤ 2
More from @codenight_ir
  1. Sep 27, 2026🤖 معرفی Codex CLI — عامل کدنویسی متن‌باز OpenAI در ترمینال برنامه ی Codex CLI ابزار رسمی…
  2. Sep 27, 2026💻 مهم‌ترین نکات در وایب کدینگ وایب کدینگ یعنی با کمک AI سریع‌تر ایده‌ات رو به کد تبدیل کن…
  3. Sep 26, 2026با این پرامپت ۲ تا باگ کریتیکال رو فیکس کردم که بعدا میتونست مشکل ساز بشه چیزهایی که قبلا…
  4. Sep 26, 2026🔐 برای بررسی امنیت پروژه‌ای که با AI می‌سازیم، چه پرامپتی بنویسیم؟ وقتی با وایب‌کدینگ یک…
  5. Sep 26, 2026⚠️ اتفاق هک شدن دیتابیس سایت فکرم رو حسابی درگیر کرد ک کل امنیت وبسایت رو با ai بررسی کنم…
  6. Sep 26, 2026مشکل از نشت فایل .env بود حالا چطور این فایل در دسترس هکر ها قرار گرفته بود جالب بود اول ک…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →