DIP مخفف Dependency Inversion Principle و مفهومی است که وابستگی مستقیم کلاس های سطح بالا را به کلاس های سطح پایین منع میکند. به این منظور که اگر کلاس خاصی(high-level) که از کلاس های دیگر(low-level) استفاده می کند وابستگی مستقیمی با کلاس های low-level داشته باشد سبب بروز این مشکل خواهد شد که اگر کلاس low-level دیگری به مجموعه افزوده شود اجبارا کلاس high-level نیز بایستی تغییر کند. DIP برای حل این مشکل به وجود آمده است. برای مثال تصویر زیر را در نظر بگیرید:

CopyClassTightCoupling

فرض کنید کلاسی با نام Copy داریم که وظیفه دریافت ورودی از KeyboardReader و ارسال آن به PrinterWriter را دارد. در این مثال، کلاس Copy از نوع high-level است. فرض کنید کدی که برای حل مسئله استفاده شده است مانند زیر باشد:

همانطور که مشاهده میکنید کلاس Copy مستقیما از KeaboardReader و PrinterWriter استفاده کرده است، حال فرض کنید اگر علاوه بر PrinterWriter قرار باشد FileWriter نیز به پروژه افزوده شود اجبارا کلاس Copy نیز بایستی تغییر کند. یکی از راه های ممکن برای حل این مشکل خارج کردن وابستگی کلاس Copy به کلاس های low-level است. بدین منظور از interface ها و یا کلاس های abstract استفاده میکنیم:

CopyClassLooseCoupling

  در تصویر فوق کلاس Copy به جای وابسته شدن به کلاس های low-level از اینترفیس ها استفاده میکند و این باعث می شود که وابستگی Copy به کلاس های سطح پایین به حداقل ممکن برسد. کد بهینه شده را میتوانید مشاهده نمایید:

همانطور که مشاهده میکنید کلاس Copy تنها به اینترفیس ها وابستگی پیدا کرده است که سبب می شود مشکلاتی که در بالا اشاره شد ایجاد نشود.

 

منبع:

http://prasadhonrao.com

محمد باقر رستمی

برنامه نویسی رو دوست دارم و از کارم و بیشتر از اون از یادگرفتن لذت می برم. دوست دارم از این طریق برای مردم دنیا مفید باشم. فارغ از رنگ، نژاد، ملیت و جنسیت.

Latest posts by محمد باقر رستمی (see all)

facebooktwittergoogle_pluslinkedin

دیدگاه

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

*

*