Junior — Middle
Meséljen az MVI architektúrális mintának való megfelelés tapasztalatáról.
sobes.tech MI
Válasz az MI-től
Model-View-Intent (MVI) — egy architekturális minta, amely segít az UI állapotának kezelésében a felhasználói szándékok (intents) áramlásán keresztül.
Tapasztalatom szerint az MVI Androidon való megvalósításakor:
- Intent — a rendszerbe küldött felhasználói műveletek vagy események.
- Model — üzleti logika és állapot, amelyek feldolgozzák az intents és új állapotot alkotnak.
- View — megjeleníti az állapotot és generál intents.
Például, egy gomb megnyomásakor a View küld egy Intentet, a Model feldolgozza azt és frissíti az Állapotot, amit a View megjelenít.
Ez lehetővé teszi az UI előrejelezhetőségét és könnyű tesztelhetőségét.
Egyszerűsített kód példa:
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)
// adatok betöltése
state.value = ViewState(false, "Adatok betöltve")
}
private fun submitData(text: String) {
// küldés feldolgozása
}
fun getState(): StateFlow<ViewState> = state
}