Что такое однонаправленный поток данных

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

Ответ

Однонаправленный поток данных (Unidirectional Data Flow, UDF) — это архитектурный подход, при котором данные передаются только в одном направлении: от родительских компонентов к дочерним. Это упрощает отладку и предсказуемость состояния приложения.

Пример с Jetpack Compose:

@Composable
fun Counter(count: Int, onIncrement: () -> Unit) {
    Button(onClick = onIncrement) {
        Text("Clicked $count times")
    }
}

Здесь count передается только сверху вниз, а события (onIncrement) всплывают вверх. Это предотвращает прямое изменение состояния дочерними компонентами.

Преимущества:

  • Четкая структура данных
  • Легче отслеживать изменения
  • Упрощенное тестирование