Какие знаешь сущности в Presentation слое Clean Architecture

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

Ответ

В Presentation слое Clean Architecture обычно выделяют следующие сущности:

  1. View (UI) - Activity, Fragment, Composable и т.д. Отвечает за отображение данных и взаимодействие с пользователем. Должен быть максимально "тупым".

  2. ViewModel - хранит UI-логику и состояние экрана. Коммуницирует с Domain слоем через UseCases. Пример:

class MyViewModel(
    private val getDataUseCase: GetDataUseCase
) : ViewModel() {
    private val _state = MutableStateFlow<State>(State.Loading)
    val state: StateFlow<State> = _state.asStateFlow()

    fun loadData() {
        viewModelScope.launch {
            _state.value = State.Loading
            _state.value = try {
                State.Success(getDataUseCase.execute())
            } catch (e: Exception) {
                State.Error(e.message)
            }
        }
    }
}
  1. State - immutable классы данных, описывающие состояние UI.

  2. UI Events - sealed классы/интерфейсы для обработки пользовательских действий.

  3. Mappers - преобразуют Domain модели в Presentation модели.