Я использую технику внедрения зависимостей в моих двух текущих текущих проектах.
Я использую Unity в качестве своей платформы IoC.
Я использую класс ComponentBuilder, который отвечает за создание объектов приложения и их подписку на события в рамках инициализации приложения.
После запуска приложения все объекты готовы и данные передаются от одного объекта к другому.
У меня проблема:
Некоторые объекты создаются динамически после инициализации, эти объекты нуждаются в других объектах, которые уже существуют.
Поскольку ComponentBuilder уже завершил свою часть, мне нужно найти способ передачи необходимых объектов этим "динамическим" объектам. Эти динамические объекты на самом деле представляют собой иерархию объектов, созданных во время выполнения, для самого глубокого объекта в иерархии необходим компонент (объект) из верхней части иерархии.
Я подумал о двух возможных решениях (они мне не нравятся оба):
Передайте контейнер всех объектов из ComponentBuilder динамическим объектам, чтобы они могли использовать нужные объекты и подписаться на них. Основным недостатком этой опции является раскрытие всех объектов, которые могут скрывать зависимости между объектами. Я видел, что некоторые люди передают контейнер объектов всем объектам, как если бы он был логгером или дисплеем, я думаю, что это неправильно и скрывает зависимости, которые мы хотим представить другим объектам.
Передайте необходимые объекты первому объекту, созданному во время инициализации, чтобы позже он передал объекты по иерархии объектов динамическому объекту. главный минус этой опции в том, что некоторые объекты в иерархии не нуждаются в этих объектах.
вы можете придумать лучшее решение?