متین تلخابی
متین تلخابی
خواندن ۲ دقیقه·۵ ماه پیش

اصل وارونگی وابستگی (Dependency Inversion Principle)

توی این پست به اصل پنجم از سری اصول SOLID میپردازیم.



توضیح اکادمیک :

کلاس های سطح بالا نباید به کلاس های سطح پایین وابسته باشن
هر دو باید وابسته به انتزاع (Abstractions) باشن.
موارد انتزاعی نباید وابسته به جزئیات باشن => جزئیات باید وابسته به انتزاع باشن

اول از همه کلاس سطح پایین چیه؟

به کلاسی که مسئول عملیات های اساسی و پایه ای توی نرم افزار هستن
مثلا کلاسی که با دیتابیس ارتباط برقرار می کنه
کلاسی که ایمیل میفرسته

کلاس سطح بالا چیه؟

به کلاس هایی که نسب به کلاس های سطح پایین عملیات های پیچیده تری انجام میدن
به عنوان مثال گزارش گیری و ثبت و خوندن گزارش که به کلاس ارتباط با دیتابیس (کلاس سطح پایین) احتیاج داره

حالا باید ببینیم مفهوم انتزاع چیه؟

به کلاس هایی که قابل پیاده سازی نیستن ولی به عنوان الگو استفاده می شن
اگه پست های قبلی من رو خونده باشین همیشه مثال هایی که می زنیم که به صورت کامل قابلیت پیاده سازی رو ندارن
مثلا کلاس Animal کلاسی انتزاعی برای بقیه حیوانات هست ولی به خودی خود قابل پیاده سازی نیست بلکه یه طرح کلی برای حیوان هایی هست که وجود دارن پس => همه ی حیوان های یک ورژن کلی تر دارن که می تونیم اون رو Animal بگیم

(اگه فرصت شد یه پست هم برای توضیح انتزاع می نویسم همینجا اضافش می کنم)

پس ما باید به صورت کلی کلاس های سطح پایین رو طوری تعریف کنیم که وابسته به یه نوع انتزاع باشن و بعد از اونا استفاده کنیم(البته این اصل ماجرا نیست ولی همین رو بگیرید بسه...)

برای مثال می تونیم از این کد استفاده کنیم

ما از abc.ABC برای ایجاد یه اینترفیس انتزاعی استفاده کردیم (تو پایتون بهش Base Class Abstract میگن)
حالا دیگه اینطوری می تونیم از روش های مختلف ارتباط با دیتابیس استفاده کنیم بدون اینکه به کد اصلی دست بزنیم برای استفاده از این کد هم می تونیم اینطوری عمل کنیم

مثل بقیه اصول SOLID این اصل هم تلاش می کنه که وابستگی بین اجزا رو کمتر کنه تا کد ها قابلیت نگهداری بالایی رو داشته باشن و بشته توسعشون داد
ولی همیشه در نظر داشته باشید که اصول برنامه نویسی باید با چشم باز استفاده بشه بعضی وقت ها اصول نه تنها مشکل رو حل نمی کنن بلکه مشکل رو پیچیده ترش می کنن

اگه خواستید راجب برنامه های قابل توسعه بخونید:

https://virgool.io/@KMmatin/%D8%A7%D8%B5%D9%88%D9%84-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%87%D8%A7%DB%8C%DB%8C-%DA%A9%D9%87-maintainable-%D9%87%D8%B3%D8%AA%D9%86-%DA%86%DB%8C%D9%87-pedowvehetyn

اگر هم خواستید به کل اصول SOLID دسترسی داشته باشید

https://virgool.io/@KMmatin/%D8%A7%D8%B5%D9%88%D9%84-solid-kilmqrbhi29u

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

ان شاء الله راهی که میریم ختم بشه به ظهور سریعتر آقا امام زمان...

اصول solidsoliddipdependency inversion principleاصول برنامه نویسی
برنامه‌نویس Back End مسلط به زبان‌های TailwindCSS، JavaScript، Python و فریم‌ورک Django. مشتاق یادگیری و پیشرفت
شاید از این پست‌ها خوشتان بیاید