Ответ
MVVM (Model-View-ViewModel) — оптимальный выбор для Jetpack Compose. Compose работает как View, а ViewModel управляет состоянием и логикой.
Плюсы:
- Четкое разделение UI и логики.
- Состояние легко тестируется.
- Интеграция с Jetpack (LiveData/Flow, State).
Пример:
@Composable
fun CounterScreen(viewModel: CounterViewModel = viewModel()) {
val count by viewModel.count.collectAsState()
Button(onClick = { viewModel.increment() }) {
Text("Count: $count")
}
}
class CounterViewModel : ViewModel() {
private val _count = MutableStateFlow(0)
val count: StateFlow<Int> = _count.asStateFlow()
fun increment() { _count.value++ }
}
Альтернативы:
- MVI — хорош для сложных состояний, но избыточен для простых экранов.
- Clean Architecture — подходит для больших проектов, но требует больше boilerplate.
Для большинства случаев MVVM + Compose — золотая середина.