Sobes.tech
Junior — Middle

Model-View-Intent (MVI) mimari desenini uygulama deneyiminizden bahsedin.

sobes.tech yapay zeka

AI'dan gelen yanıt

Model-View-Intent (MVI) — mimari bir desen olup, kullanıcı niyetleri (intents) akışı aracılığıyla UI durumunu yönetmeye yardımcı olur.

Android'de MVI uygulama deneyimimde:

  • Intent — sisteme gönderilen kullanıcı eylemleri veya olaylar.
  • Model — intents'i işleyen ve yeni bir durum oluşturan iş mantığı ve durum.
  • View — durumu gösterir ve intents üretir.

Örneğin, bir düğmeye basıldığında, View bir Intent gönderir, Model onu işler ve durumu günceller, View ise gösterir.

Bu, UI'yi öngörülebilir ve kolay test edilebilir hale getirir.

Basitleştirilmiş kod örneği:

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)
        // veri yükleme
        state.value = ViewState(false, "Veriler yüklendi")
    }

    private fun submitData(text: String) {
        // gönderim işlemi
    }

    fun getState(): StateFlow<ViewState> = state
}