Основным преимуществом инъекции конструктора является то, что он позволяет вашим полям быть отмеченными окончательными. Например:
class Foo {
private final Bar _bar;
Foo(Bar bar) {
_bar=bar;
}
}
На следующей странице есть отличный список про и con: Guice Best Practices :
Метод инъекции
- + Не вводится в поле
- + Единственное, что работает для некоторых странных случаев кросс
Инъектор конструктора
- + Поля могут быть окончательными!
- + Инъекция не может быть пропущена
- + Легко видеть зависимости с первого взгляда
- + Это то, что идея конструкция - все о
- - Нет дополнительных инъекций
- - Бесполезно, если библиотека DI не может сама выполнить экземпляр
- - Подклассам нужно «знать» об инъекциях необходимые для их суперклассов
- - Менее удобен для тестов, которые только «заботятся» о одном из параметров
задан Null isTrue 2 March 2019 в 01:48
поделиться