Назад к вопросам
Wildberries
Иннотех
Яндекс
OZON
Rutube
Junior — Middle
67
Имеете ли опыт разработки приложений с использованием архитектурного паттерна Model-View-Intent (MVI)?
Компании, где спрашивали
SM Lab
Ответ от нейросети
sobes.tech AI
Да, опыт разработки с использованием паттерна Model-View-Intent (MVI) есть. В MVI вся логика приложения строится вокруг потоков данных и намерений пользователя (Intent). Модель (Model) содержит состояние, View отображает это состояние, а Intent — это события, которые пользователь инициирует, например, нажатия кнопок.
Пример простого MVI на Kotlin для Android:
// Intent - действия пользователя
sealed class UserIntent {
object LoadData : UserIntent()
data class Submit(val input: String) : UserIntent()
}
// Model - состояние UI
data class ViewState(val isLoading: Boolean = false, val data: String? = null)
// ViewModel обрабатывает Intent и обновляет состояние
class MainViewModel : ViewModel() {
private val _state = MutableLiveData<ViewState>()
val state: LiveData<ViewState> = _state
fun processIntent(intent: UserIntent) {
when (intent) {
is UserIntent.LoadData -> {
_state.value = ViewState(isLoading = true)
// загрузка данных...
_state.value = ViewState(isLoading = false, data = "Данные загружены")
}
is UserIntent.Submit -> {
// обработка отправки
}
}
}
}
Такой подход помогает четко разделить логику и UI, облегчает тестирование и управление состоянием.