Sobes.tech
Junior — Middle

Разкажете за вашия опит в реализирането на архитектурния модел Model-View-Intent (MVI).

sobes.tech AI

Отговор от AI

Model-View-Intent (MVI) — това е архитектурен модел, който помага за управлението на състоянието на потребителския интерфейс чрез поток от намерения (intents) на потребителя.

От моя опит при реализирането на MVI в Android:

  • Intent — действия или събития на потребителя, които се изпращат към системата.
  • Model — бизнес логика и състояние, които обработват intents и формират ново състояние.
  • View — показва състоянието и генерира intents.

Например, при натискане на бутон, View изпраща Intent, Model го обработва и актуализира състоянието, което 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
}