جایگزینی دستورات شرطی با چند ریختی

Polymorphism
Polymorphism


فرض کنید کدی داریم که شامل تعداد زیادی دستور شرطی باشد، چگونه می توانیم با استفاده از مفاهیم شی گرایی آنها را حذف کنیم؟

اجازه دهید با یک مثال بررسی کنیم.

مثال: بازی را در نظر بگیرید که شامل خرگوش، خرس و لاکپشت باشد. با گذشت زمان می خواهیم بر اساس نوع مختلف حیوانات، سرعت هر کدام را افزایش دهیم. اما افزایش ها برای حیوانات مختلف، متفاوت خواهد بود. مثلا هر افزایش برای سرعت خرگوش 3 واحد و برای خرس 2 واحد و برای لاکپشت 1 واحد خواهد بود.

راه حل ابتدایی (استفاده از دستورات شرطی):

https://gist.github.com/farhadmpr/b9b462dc6da87e15272f79388f7aaf69


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

برای حل مسئله فوق چه خواهیم کرد؟ چگونه همه شرط ها را از اینجا حذف کنیم؟

برای انجام این کار ابتدا باید درک کنیم که باید منطق افزایش سرعت را از متد بالا حذف کنیم و آن را در اشیاء مربوطه (حیوانات) قرار دهیم.

با این کار هر حیوان مسئول افزایش سرعت خود خواهد بود.

https://gist.github.com/farhadmpr/9b0da3b20f80480ada0d99c12a23769d

اکنون کد بسیار ساده و خواناتر شده و همه منطق به کلاس های مربوطه منتقل شده و شرط دیگری وجود ندارد.

دیدگاهتان را بنویسید

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