Я перерабатываю класс и добавляю к нему новую зависимость. Класс в настоящее время принимает свои существующие зависимости в конструкторе. Поэтому для согласованности я добавляю параметр в конструктор.
Конечно, есть несколько подклассов и даже больше для модульных тестов, поэтому теперь я играю в игру, изменяя все конструкторы, чтобы соответствовать, и это занимает много времени.
Это заставляет меня думать, что использование свойств с сеттерами - лучший способ получить зависимости. Я не думаю, что вложенные зависимости должны быть частью интерфейса для построения экземпляра класса. Вы добавляете зависимость, и теперь все ваши пользователи (подклассы и кто-то, создающий вас непосредственно) вдруг узнают об этом. Это похоже на разрыв инкапсуляции.Зависимость впрыска через конструкторы или сеттеры?
Это не похоже на шаблон с существующим кодом здесь, поэтому я ищу, чтобы узнать, каков общий консенсус, плюсы и минусы конструкторов по сравнению с свойствами. Является ли использование свойств сеттеров лучше?
Я думаю, что во многих случаях предпочтительнее использовать шаблон Null Object и придерживаться требуемых ссылок на конструктор. Это позволяет избежать всей нулевой проверки и повышенной циклической сложности. –
@Mark: Хорошая точка. Однако речь шла о добавлении зависимости к существующему классу. Тогда сохранение конструктора no-arg допускает обратную совместимость. – sleske
Как насчет того, когда зависимость должна функционировать, но стандартная инъекция этой зависимости обычно будет достаточной. Тогда должна ли эта зависимость «переопределяться» по свойству или перегрузке конструктора? –