آژانس طراحی وب لابراتوآر رسانه

آموزش Strategy Design Pattern قسمت اول

فروردین ۲۹, ۱۳۹۷
حسین صداقت

سناریوی زیر را در نظر بگیرید:

بازی وجود دارد که در آن انواع و اقسام اردک تعریف شده اند و اردک ها قادر به شنا کردن و کوئک کردن و دارای نمایش خاص می باشند و شی این اردک ها به این صورت تعریف شده است که یک کلاس Abstract به نام Duck تعریف شده است و کلاس های RedHeadDuck و MallardDuck از این کلاس ارث برده و متد Display کلاس پدر را Override و بازنویسی کرده اند:

 

چند وقتی است که رقبا با وارد کردن بازی مشابه به بازار شرکت سازنده این بازی را تحت فشار گذاشته اند و شرکت سازنده این بازی برای اینکه بتواند با بازی های مشابه رقابت کنند تصمیم به تغییر در این بازی را گرفته اند و چگونگی این تغییر را به تیم فنی بازی سپرده اند. تیم فنی پیشنهاد پرواز کردن اردک ها را مطرح می کند و قرار می شود این پیشنهاد در جلسه سهام داران مطرح شود.

در جلسه مدیر با سهامداران ، سهامداران به این نکته اشاره می کنند که این اتفاق مسخره ای می باشد که همه اردک ها پرواز کنند و فقط بعضی از آن ها باید بتوانند پرواز کنند.

خب تیم فنی برای ایجاد این تغییر چه راه حل هایی را می تواند در نظر بگیرد؟

۱-Inheritance : اولین راه کاری که به ذهن تیم فنی می آید این است که برای اردک هایی که قادر به پرواز کردن نیستند متد Fly را Override و بازنویسی کنند و عملیات و Action پرواز نکردن را برای آن ها تعریف کنند.همچنین فرض کنید اردکی هم توانایی Quack کردن هم نداشته باشد.اما این کار دارای مشکلاتی است :

۱-این کار باعث پیدا شدن کد duplicate در سیستم می شود به این صورت که اردک هایی که رفتار مشابه دارند باید جداگانه رفتار ها در سیستم تعریف شوند.

۲-ممکن است ما بخواهیم اردک ما تحت شرایطی و در Run time  تصمیم گرفته شود که پرواز کند که این کار با Inheritance امکان پذیر نیست.

به دلایل بالا استفاده از Inhertiance یا ارث بری رد می شود.

 

پایان قسمت اول

منبع : Head First Design Pattern

 

شنبه ها قبل از شروع کار یک مقاله رایگان از لابراتوار رسانه برای بهبود کسب و کار خود دریافت کنید

 

حسین صداقت

درباره

برنامه نویس وب

پاسخ دهید
نشانی ایمیل شما منتشر نخواهد شد. بخش‌های مورد نیاز با * علامت‌گذاری شده‌اند.

شنبه ها قبل از شروع کار یک مقاله رایگان از لابراتوار رسانه برای بهبود کسب و کار خود دریافت کنید

شنبه ها قبل از شروع کار یک مقاله رایگان از لابراتوار رسانه برای بهبود کسب و کار خود دریافت کنید