Sobes.tech
Junior — Middle

Պատմեք ձեր փորձի մասին՝ կապված Model-View-Intent (MVI) ճարտարապետական դիզայնի իրականացման հետ։

sobes.tech AI

Պատասխան AI-ից

Model-View-Intent (MVI) — դա ճարտարապետական նմուշ է, որը օգնում է կառավարել UI-ի վիճակը օգտագործողի niյու (intents) հոսքի միջոցով:

Իմ փորձից՝ Android-ում MVI-ն իրականացնելիս՝

  • Intent — գործողություններ կամ իրադարձություններ, որոնք ուղարկվում են համակարգին:
  • Model — բիզնես տրամաբանություն և վիճակ, որոնք մշակվում են intents-ները և ձևավորում նոր վիճակ:
  • 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
}