Сделать хранилище невидимым в доменном слое чистой архитектуры - PullRequest
0 голосов
/ 26 января 2019

Я недавно слышал и исследовал чистую архитектуру и пытаюсь реализовать ее самостоятельно, чтобы понять ее глубже, я знаю, Модуль домена (слоя) имеет логику и должен иметь некоторые интерфейсы, а также UseCasesкоторые используют репозитории.Насколько я узнал, слой Domain не имеет доступа ни к каким другим слоям, но слой Data и Presentation имеет доступ к домену слой, но не друг к другу.

Мои определения репозиториев (интерфейсы) находятся в модуле Domain , а их реализация находится в модуле Data и затем вводится Dagger.Кроме того, у меня есть некоторые UseCases , которые внедряют некоторые репозитории.

У меня проблема в том, что модуль Presentation имеет доступ к интерфейсам репозиториев и сценариям использования, какоба находятся в модуле Domain и импортируются с помощью gradle в слой Presentation .

Я не думаю, что иметь доступ к обоим в Presentation модуль был бы хорош, я использую Kotlin и ключевое слово internal , чтобы изолировать классы для каждого модуля, но так как Data модуль должен иметь доступ к интерфейсам репозиториев для их реализации, я не могу использовать внутреннее ключевое слово для них, чтобы они теперь были доступны.

Мой вопрос: можно ли как-то изменить дизайн, чтобы раскрыть только варианты использования?

1 Ответ

0 голосов
/ 29 января 2019

Если UseCase относится к данным (например, ReadUserUseCase), то его интерфейс должен оставаться в модуле domain, а реализация должна быть перемещена в модуль data.

...