Аз съм начинаещ в Dependency Injection. Никога не съм използвал и дори не съм разбирал за какво точно става въпрос, но след последната ми атака по тази тема открих, че това е начин за разединяване на обект и неговите зависимости, след като те не са отговорни за инстанцирането на конкретните версии на неговите вече няма зависимости, тъй като сега контейнерът ще го направи вместо нас и ще достави готовия обект в ръцете ни.
Сега въпросът е; "кога трябва да го използвам?", ВИНАГИ??? Всъщност, тъй като съм начинаещ и никога не съм виждал проект, който използва този шаблон, не мога да разбера как трябва да го приложа към моите обекти на домейн!!! Струва ми се, че никога повече няма да инстанцирам обектите си и контейнерът винаги ще го прави вместо мен, но тогава идват някои съмнения...
1) Какво ще кажете за oobjects, че част от неговите зависимости идват от потребителския интерфейс, например;
public class User(String name, IValidator validator)
Да кажем, че получавам потребителското име от потребителския интерфейс, така че как conatiner ще го знае и все пак ще достави този обект за мен?
2) Има друга ситуация, пред която съм изправен; ако зависимостта сега е обект, който вече е инстанциран, да речем... SINGLETON обект, например. Видях, че има настройки относно обхвата на живота на инжектираната зависимост (говоря за Spring.NET, напр.; обхват на http заявка)... НО, заявката и други свързани с мрежата неща са на моя презентационен слой, така че как бих могъл да свържа както моя презентационен слой, така и моя домейн слой, без да наруша което и да е правило за проектиране (тъй като моят домейн не трябва да е напълно наясно къде се консумира, да няма зависимост от слоя и т.н.)
Нямам търпение да чуя всички вас. Много благодаря.