Вот общий воображаемый пример, составленный для этого поста.Рассмотрим 6 классов
TableFactory, TableData, TableCRUD, TableSchema, DBConnect, Logger.
TableFactory
- это внешний класс, допустим, он содержит объект TableData
для таблицы БД.
В этом TableFactory
нет вызововдо TableSchema
или DBConnect
или logger
.Я нацеливаюсь на пример внутренних объектов, которые не нужны во внешней области.
TableData
- это внутренняя выборка, которая работает с данными, поэтому для нее нужны TableCrud
, DBConnect
и Logger
.
TableCrud
содержит TableSchema
и нуждается в DBConnect
и Logger
.
DbConnect
для того, чтобы все было весело, нужен регистратор.Мой пример теперь имеет 3 области видимости.
Мой вопрос довольно прост: если у вас есть объект 3 (или более) областей действия, которые не вызываются объектами во внешней области видимости, как можно отправитьэти объекты из внешней во внутреннюю область видимости, не нарушая принцип разделения интерфейса -> TableFactory не должен иметь дело с DBConnect или Logger, необходимыми внутренним объектам.
Если уважать основные принципы ООП и стремиться к легкомуtestability -> у вас будут внешние объекты, нуждающиеся в инжекции 5 объектов, а затем есть методы получения, которые будут передавать объекты, необходимые дальше по цепочке.В свою очередь, объекты внутренней области видимости потребуют внедрения зависимостей их внутренних объектов глубиной в 3 области, с получателями для них тоже.Это делает для объектов с внешней областью видимости, требующих многих зависимостей, и получателей просто для их передачи.
Есть ли альтернатива этой методологии передачи объектов, которую я пропустил по пути?Поделись, пожалуйста!Любые ссылки / комментарии приветствуются.