Чем отличается Внедрение через конструктор и Внедрение через метод?

Помогите разобраться в DI (Dependency Injection), а конкретно, чем отличается Внедрение через конструктор и Внедрение через метод? Если можно, то желательно с примерами


Ответы (1 шт):

Автор решения: Kromster

Разница кажется очевидной.

При внедрении через конструктор, предполагается, что для создания объекта зависимости необходимы (наравне с другими аргументами передаваемыми в конструктор). То есть, если зависимости еще не созданы, без них, объект не имеет смысла и не может быть создан.

При внедрении через метод, зависимости опциональны или нужны чисто в динамике - только тогда, когда они конкретно будут использованы. Т.е. необходимость внедрения обуславливается не существованием объекта, а каким-то сценарием использования.


Другими словами - различные варианты/решения диктуются различным дизайном и архитектурой системы и задают её предполагаемое использование.

→ Ссылка