Ответ
На текущем проекте мы используем MVVM (Model-View-ViewModel) с элементами Clean Architecture. Это позволяет разделять ответственности, упрощает тестирование и поддерживает реактивность через LiveData/Flow.
Пример структуры пакетов:
app/
├── data/ (репозитории, API, DB)
├── domain/ (use cases, entities)
└── presentation/
├── view/ (Activity/Fragment)
└── viewmodel/
Код ViewModel с LiveData:
class UserViewModel(repo: UserRepository) : ViewModel() {
private val _users = MutableLiveData<List<User>>()
val users: LiveData<List<User>> = _users
fun loadUsers() {
viewModelScope.launch {
_users.value = repo.getUsers()
}
}
}
Дополнительно применяем SOLID и KISS для читаемости кода.