Чем отличается Внедрение через конструктор и Внедрение через метод?
Помогите разобраться в DI (Dependency Injection), а конкретно, чем отличается Внедрение через конструктор и Внедрение через метод? Если можно, то желательно с примерами
Ответы (1 шт):
Разница кажется очевидной.
При внедрении через конструктор, предполагается, что для создания объекта зависимости необходимы (наравне с другими аргументами передаваемыми в конструктор). То есть, если зависимости еще не созданы, без них, объект не имеет смысла и не может быть создан.
При внедрении через метод, зависимости опциональны или нужны чисто в динамике - только тогда, когда они конкретно будут использованы. Т.е. необходимость внедрения обуславливается не существованием объекта, а каким-то сценарием использования.
Другими словами - различные варианты/решения диктуются различным дизайном и архитектурой системы и задают её предполагаемое использование.