Здесь есть две разные вещи. Давайте используем простой пример «Человек».
Свойства человека могут включать firstName, lastName, dateOfBirth и т. Д. Чтобы сохранить инкапсуляцию, они могут быть частными. Если вам нужен возраст человека, вам придется попросить объект Person дать вам возраст, и он будет использовать свою приватную дату, чтобы рассчитать возраст. Это предотвращает дублирование во многих местах в системе логики того, как возраст человека дублируется, что может быть поощрено, если dateOfBirth является общедоступным.
Объект Person также может иметь зависимости от других объектов. Вместо того, чтобы создавать сами эти объекты, человек полагается на какой-либо другой объект в системе для создания зависимостей и передает их. Объект Person может публиковать публичные свойства для хранения этих зависимостей (или методов для установки зависимостей) - это не свойства человека, они являются зависимостями человека.
Это на самом деле еще один пример логики только в одном месте - у вас есть одна «вещь» в вашей системе, которая может создавать зависимость, а не иметь много объектов, все создающих эту зависимость для себя.
Что вы имеете в виду, когда говорите, что «Инъекция побуждает нас раскрывать данные как общедоступные»? – tbsalling