Вы можете создать новый модуль с общим кодом и добавить его в качестве зависимости в оба модуля (корзину и категории), если у вас есть модульная структура по слоям, вы можете сделать то же самое для слоев данных, поэтому, если вам нужны те же API вВ другом модуле вы можете добавить его в качестве зависимости или разделить его на новые модули, если будете использовать только некоторые части.
implementation project(':common_apis_module')
В чистой архитектуре, если вы делаете запрос от модуля, это понимается как разные варианты использования, если вынеобходимо получить одинаковые данные из модели в обоих случаях, может быть, вам нужно совместно использовать UseCase в общем модуле.
Создать интерфейсы для связи между модулями в common_apis_module.
interface CommunicationModule1 {
fun doSomethingInModule1(someParam: String)
fun doAnotherThingInModule1(anotherParam: Int)
}
исоздайте другой интерфейс для связи во втором модуле, как указано выше. затем вы добавите общий модуль в оба модуля, и вы сможете использовать интерфейсы в обоих модулях. Я рекомендую использовать кинжал.
class OneClassInModule2 : DaggerAppCompatActivity{
@Inject
late init var communicationModule1 : CommunicationModule1
}
Второй класс:
class OneClassInModule1: CommunicationModule1 {
override fun doSomethingInModule1(someParam: String){
// Do Something with the string
}
}