Back to questions
Junior — Middle
73
Расскажите о вашем опыте реализации архитектурного паттерна Model-View-Intent (MVI).
Companies where asked
SkillStaff
Rostic's
Юрент
IBS
Answer from AI
sobes.tech AI
Model-View-Intent (MVI) — это архитектурный паттерн, который помогает управлять состоянием UI через поток намерений (intents) пользователя.
В моём опыте реализации MVI в Android:
- Intent — пользовательские действия или события, которые отправляются в систему.
- Model — бизнес-логика и состояние, которые обрабатывают intents и формируют новый state.
- View — отображает состояние и генерирует intents.
Например, при нажатии кнопки View отправляет Intent, Model обрабатывает его и обновляет State, который View отображает.
Это позволяет сделать UI предсказуемым и легко тестируемым.
Пример упрощённого кода:
sealed class Intent {
object LoadData : Intent()
data class Submit(val text: String) : Intent()
}
data class ViewState(val isLoading: Boolean, val data: String?)
class Model {
private val state = MutableStateFlow(ViewState(false, null))
fun process(intent: Intent) {
when (intent) {
is Intent.LoadData -> loadData()
is Intent.Submit -> submitData(intent.text)
}
}
private fun loadData() {
state.value = ViewState(true, null)
// загрузка данных
state.value = ViewState(false, "Данные загружены")
}
private fun submitData(text: String) {
// обработка отправки
}
fun getState(): StateFlow<ViewState> = state
}