К какому слою Clean Architecture относится ViewModel

«К какому слою Clean Architecture относится ViewModel» — вопрос из категории Архитектура, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

ViewModel относится к Presentation Layer (слой презентации) в Clean Architecture. Она преобразует данные из Use Cases в формат, удобный для отображения в UI, и управляет состоянием экрана. ViewModel не должна содержать бизнес-логику — это задача Domain Layer.

Пример:

class MyViewModel(
    private val getUserUseCase: GetUserUseCase
) : ViewModel() {
    private val _user = MutableStateFlow<User?>(null)
    val user: StateFlow<User?> = _user

    fun loadUser(userId: String) {
        viewModelScope.launch {
            _user.value = getUserUseCase(userId)
        }
    }
}