Признак хорошего тона — не делать ничего в конструкторе кроме того, что необходимо. А все, что необходимо, — это проверять предоставленные аргументы, а затем присваивать их в качестве значения для свойств сервиса.
Полиморфизм означает, что если для параметра задан определенный класс в качестве типа, то любой объект, являющийся экземпляром этого класса, можно передавать в качестве допустимого аргумента.
Сейчас же достаточно знать, что получение зависимостей из известного источника называется локализацией сервисов, а получение зависимостей в качестве аргументов конструктора — внедрением зависимостей.
Короче говоря, всегда избегайте создания методов-запросов, которые будут раскрывать внутренние данные объекта: • Создавайте эффективные методы, адаптируйтесь к потребностям клиентов. • Переместите вызов метода в объект, это позволит объекту самому решать, что делать.