Layered design in software engineering

2-The dependency injection (DI) software design pattern

اتكلمنا فى المره السابقه عن ال inversion of control واتفقنا  أن فى اكتر من technique ممكن نستخدمه علشان نطبق ال IoC.

ما هو ال Dependency Injection؟

هو Design Pattern باستخدامه نقدر نحقق الـ IoC  بين ال classes  وال dependencies الخاصة ببها.

لما هنطبق آل DI هيبقى عندنا 3 انواع من ال Classes

1-Client Class
ال Class اللى بتستخدم ال dependencies مثل الـ HomeController

2-Service Class
ال Service Class يتم استخدامها  فى Classes مختلفة مثل ال SQL Server وال MySql.

3-Injector Class
ال Class المسؤله أنها توفر object of services class  لل client class.




ال injector class تقدر توفر او تعمل inject  لل objects of service class عن طريق ثلاث طرق:

1-Constructor Injection
وهنا بنوفر لل Client Class الى objects  بأستخدام ال Constructors الخاص بها.

2-Property Injection

وهنا بنوفر لل Client Class الى objects  بأستخدام  Public Property .

3-Method Injection

وهنا بنوفر لل Client Class الى objects  بأستخدام  Method  .


انت ممكن تعمل implement لل Dependency Injection Pattern بنفسك عن طريق استخدام الطرق السابقة, بس
معظم ال Frameworks توفر implementation لـ DI  وبتقدمه بمسمى  الـ IoC Container.

ما هو ال IoC Container ?

عبارة عن Framework يقدم implementation  لـ Dependency Injection ومن مهامه الرئيسية ال Creation وال Lifetime لل objects    و injects لل dependent objects.

1-Register


وهنا كمستخدمين لـ IoC Framework هنبدأ نعرفه ونوفر ليه معلومات عن ال dependent objects اللى هيعملها inject فى ال dependent classes.

2-Resolve

وهنا اللى IoC FrameWork  بيوفر ال dependent objects اللى احنا عملنا ليهم Register  لأى class  هتستخدمهم.

3-Disposition

ال IoC مسؤول عن ال LifeTime الخاص بال dependent object ومعظم الـ IoC بتوفر لينا طريقه  كمستخدمين نحدد ال Lifetime.


مثال:
1-ASP.NET Cores built-in IoC container 
2-Spring IoC container
3-Laravel IoC container






 


تعليقات