Похоже, у вас есть знания, чтобы ответить на свой вопрос по этому вопросу, но, возможно, просто не хватает уверенности, чтобы погрузиться. Вы просто исследуете или застряли где-то?
Я бы добавил, что еще одна вещь, которую вы можете сделать, это поместить диспетчер компонентов между всеми объектами, чтобы облегчить общение. В прошлом, когда я делал нечто подобное, объект управления заканчивал тем, что брал данные из каждого компонента, объединял их вместе и передавал их в модель как один большой запрос. У каждого из моих компонентов был делегат, которого они вызывали и передавали данные, и, конечно, реализация этого делегата была на моем диспетчере компонентов.
Я также позволил этому объекту менеджера выступать в качестве прокси для сети, которую я ждал, чтобы сложность стала выше, прежде чем я присоединился к SRP и сделал эту ответственность своим собственным классом.
В основном все, что ты сказал, звучит хорошо. Я бы порекомендовал просто погрузиться и исследовать.