Sobes.tech
Junior — Middle

Parlez-nous de votre expérience dans la mise en œuvre du modèle architectural Model-View-Intent (MVI).

sobes.tech IA

Réponse de l'IA

Model-View-Intent (MVI) — c'est un patron architectural qui aide à gérer l'état de l'interface utilisateur via le flux d'intentions (intents) de l'utilisateur.

Dans mon expérience de mise en œuvre de MVI sur Android :

  • Intent — actions ou événements de l'utilisateur envoyés au système.
  • Model — logique métier et état qui traitent les intents et forment un nouvel état.
  • View — affiche l'état et génère des intents.

Par exemple, en appuyant sur un bouton, la vue envoie un Intent, le Model le traite et met à jour l'État, que la vue affiche.

Cela permet de rendre l'UI prévisible et facile à tester.

Exemple de code simplifié :

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)
        // chargement des données
        state.value = ViewState(false, "Données chargées")
    }

    private fun submitData(text: String) {
        // traitement de l'envoi
    }

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