با این تکنیک کدت رو انعطاف پذیر کن 🦦

با این تکنیک کدت رو انعطاف پذیر کن 🦦


‏Dependency Injection (DI) یک تکنیک و یک دیزاین پترن مهم و اساسی در برنامه نویسی شی گرا (OOP) هست، و به مدیریت وابستگی بین اجزای مختلف نرم افزار کمک می کنه. این پترن یک سری مزایا و معایب به همراه داره و یک سری مشکلات رو حل میکنه.

به عنوان مثال اگر ما کدی با کوپلینگ محکم داشته باشیم، این شرایط به وجود میاد:

تغییر: تغییر یک قسمت از کد میتونه باعث خرابی سیستم بشه.

آزمایش: تست اجزای جدا شده سخت هست. 

قابلیت استفاده مجدد: کد به پیاده سازی های خاص، گره خورده و استفاده مجدد رو محدود میکنه.

اما چجوری تزریق وابستگی این مشکل رو حل میکنه؟


- جداسازی: DI ساخت و استفاده از وابستگی ها رو جدا میکنه و باعث تقویت loose coupling میشه.

- مدیریت خارجی: یک چارچوب یا کانتینر خارجی ساخت وابستگی و چرخه حیات رو مدیریت میکنه و در صورت نیاز اون هارو تزریق میکنه.

- رابط ها: اجزا از طریق رابط ها با هم تعامل دارن و تعویض پیاده سازی ها رو آسان میکنه.

برخی از مزایا قابل توجه DI

‏1. Modularization: کامپوننت ها مستقل از نمونه سازی وابستگی های خود هستن.

2. سهولت تعویض: به راحتی میشه وابستگی های واقعی رو با ماک ه، برای تست، جایگزین کرد.

3. تست پذیری: تست رو با جداسازی اجزا افزایش میده.

4. قابلیت نگهداری: اتصال محکم رو کاهش میده، استفاده مجدد رو ترویج میکنه، تعمیر و نگهداری رو آسون تر می کنه..

5. پیکربندی متمرکز: تعمیر و نگهداری رو با پیکربندی، در یک مکان ساده می کنه. 

6. سفارشی سازی: وابستگی ها رو میشه بدون تغییر کد منبع پیکربندی کرد.

7. بهره وری: دولوپرا میتونن به طور مستقل روی اجزای مختلف کار کنند.

8. انعطاف پذیری: تنظیمات سیستم رد میشه بدون کامپایل مجدد تغییر داد.

روش های تزریق وابستگی

Constructor Injection: وابستگی ها از Constructor عبور میکنن، و اینکار وابستگی های واضح و به خوبی تعریف شده رو مشخص میکنه.

Setter Injection: وابستگی ها از طریق متد ها تنظیم میشن و برای کدهای قدیمی انعطاف پذیری ارائه میدن. 

Interface Injection: وابستگی ها از طریق interface ها ارائه میشن و loose coupling رو افزایش میدن.

Method Injection : وابستگی ها از طریق متد های خاصی تزریق میشن، که در سناریوهای خاص مفید هستن.


در نهایت ‏Dependency Injection کلید نوشتن کدهای ماژولار، قابل تست و قابل نگهداری هست. این کامپوننت‌ها رو جدا میکنه، پیکربندی رو متمرکز میکنه و انعطاف‌پذیری رو افزایش میده. همین امر باعث میشه به یک عمل ضروری برای دولوپر ها تبدیل بشه. برای اطلاعات بیشتر درمورد این پترن جذاب، پیشنهاد میکنم مقالات‌ زیر رو مطالعه کنید.


- Article

- Article

- Article


#design_pattern

@CodeModule

Report Page