Ответ
Использовал бы Clean Architecture с слоями:
- Data (Room, Retrofit, Repositories)
- Domain (UseCases, Entities)
- Presentation (MVVM с ViewModel + Compose/XML)
Ключевые компоненты:
- Модульная структура (features: auth, catalog, cart)
- DI через Hilt/Dagger
- Кэширование данных (Room для оффлайн-режима)
- Пагинация товаров (Paging 3)
- Навигация через Navigation Component
Пример ViewModel для корзины:
class CartViewModel(
private val getCartItems: GetCartItemsUseCase
) : ViewModel() {
val state = getCartItems().stateIn(
scope = viewModelScope,
started = SharingStarted.WhileSubscribed(),
initialValue = CartState.Loading
)
}