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
}