اصل Dependency Inversion 

پرسیده شده
فعالیت 1024 روز پیش
دیده شده 327 بار
0

سلام و خسته نباشید

 

دو تا سوال داشتم

 

سوال اول : تویه این کلیپ مطرح شد که وقتی از کیورد new داخل یک کلاس استفاده می کنیم احتمال داره اصل Dependency Inversion رو نقض کنیم میخواستم بدونم چه وقتایی آزادیم داخل کلاسمون مستقیما یک شی new کنیم بدون اینکه اصل Dependency Inversion نقض بشه. مثلا وقتی کلاس های فریم ورک ها یا پکیج های مطرح رو نگا میکنم میبینم که تو بعضی کلاس ها مستقیما از یک کلاس دیگه new شده

 

 

و سوال دوم اینکه ما باید اصل Dependency Inversion از همون ابتدا پیاده سازی کنیم ؟ مثلا پروژه من دو تا کلاس sessionBasket و payment داره که حالا در آینده احتمال داره من بیام کلاس databaseBasket رو هم به پروژم اضافه کنم حالا سوالم اینه که از همون ابتدا من باید پروژه رو طوری پیاده سازی کنم (با استفاده از اصل Dependency Inversion ) که وقتی در آینده کلاس databaseBasket رو اضافه کردم مشکلی ایجا نشه؟ یا نه در همون ابتدا من در کلاس payment میام مستقیما یک شی از sessionBasket ایجاد میکنم (payment به concrete وابسته میشه) و پروژ رو جلو میبرم حالا وقتی تو آینده کلاس databaseBasket رو به پروژم اضافه کردم میام کدم رو refactor میکنم و اون رو بر مبنای اصل Dependency Inversion پیاده سازی میکنم

 

ممنون میشم جدا جدا پاسخ بدید

فایل پیوست

علی.
علی.

24 تیر 00

0
حذف شده

سلام و احترام

1 - اصل Dependency Inversion به هر حال نقص میشه، کلا برای رفع این مورد باید از construct وابستگی ها تزریق بشه، ولی خب جاهای مختلف هم به این شکلی که گفتید استفاده میشه و میان یک کلاسی رو مستقیما new میگیرن، اگه مجبور به انجام همچین کاری شدید سعی کنید کلاسی باشه که این new کردنه تغییر نکنه، مثلا یه سرویسی رو نوشتید که فقط یه کار مشخص رو همیشه انجام میده، برای مثال سرویس احراز هویت یا KYC که این مشخصه داره چی کار میکنه و تغییری در آینده برای new گرفتن اتفاقی بیوفته براش، ولی به هر حال شما این new کردن رو هم میتونید ببرید داخل contruct و اینطوری خیلی بهتر میشه و مشکلی پیش نمیاد.

 

 

2 - اصل dependency inversion و Dependency Injection باید همیشه سعی کنید از همون اول رعایت کنید، اگه به لاراول یه سری بزنید میبینید یکی از بخش های قدرت مند لاراول همین IOC contrainerشه که باعث میشه این دو تا اصل رو به خوبی رعایت کنیم تا پروژه به درستی توسعه داده بشه

فایل پیوست

امیر صالحی

توسط

امیر صالحی

24 تیر 00