Лучшие практики для внедрения зависимостей через конструктор
Инверсия контроля является ценностно-ориентированным методом, который используется для модульной системы и отделения компонентов друг от друга.
Низкая связь всегда является преимуществом: она упрощает автоматическое тестирование компонентов и делает код лучше соответствующимпринцип единой ответственности.
Среди способов объявить зависимость от другого класса (сервисный локаторИнъекция свойства, вызывающая открытый метод / установка открытого свойства ...), инъекция конструктора кажется лучшим подходом.
Хотя это, вероятно, самый сложный (по крайней мере, из перечисленных трех) для реализации, он имеет значительные преимущества:
все зависимости действительно видны с помощью сигнатуры конструктора;циклические зависимости не возникают из-за четко определенного порядка создания экземпляров.Каковы плюсы / минусы множества вариантов, предлагаемых C ++ для выполнения инъекции через конструктор?