Я недавно слышал и исследовал чистую архитектуру и пытаюсь реализовать ее самостоятельно, чтобы понять ее глубже, я знаю, Модуль домена (слоя) имеет логику и должен иметь некоторые интерфейсы, а также UseCasesкоторые используют репозитории.Насколько я узнал, слой Domain не имеет доступа ни к каким другим слоям, но слой Data и Presentation имеет доступ к домену слой, но не друг к другу.
Мои определения репозиториев (интерфейсы) находятся в модуле Domain , а их реализация находится в модуле Data и затем вводится Dagger.Кроме того, у меня есть некоторые UseCases , которые внедряют некоторые репозитории.
У меня проблема в том, что модуль Presentation имеет доступ к интерфейсам репозиториев и сценариям использования, какоба находятся в модуле Domain и импортируются с помощью gradle в слой Presentation .
Я не думаю, что иметь доступ к обоим в Presentation модуль был бы хорош, я использую Kotlin и ключевое слово internal , чтобы изолировать классы для каждого модуля, но так как Data модуль должен иметь доступ к интерфейсам репозиториев для их реализации, я не могу использовать внутреннее ключевое слово для них, чтобы они теперь были доступны.
Мой вопрос: можно ли как-то изменить дизайн, чтобы раскрыть только варианты использования?