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