Ответ
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)
}
}
}