MVP - Kasimashi/Systemes-embarques GitHub Wiki

Architecture MVP (Model - View - Presenter)

L’architecture MVP est un modèle de conception utilisé pour structurer les applications avec interface utilisateur.
Elle est proche du MVC mais introduit le Presenter pour gérer la logique de présentation de façon plus explicite.

1. Model (Modèle)

Le Model gère les données et la logique métier.

Rôle :

  • Stocker et manipuler les données
  • Appliquer les règles métier
  • Communiquer avec la base de données ou les services

Exemple :

  • Classe User
  • Fonctions pour créer, modifier ou récupérer un utilisateur

2. View (Vue)

La View correspond à l’interface utilisateur.

Rôle :

  • Afficher les informations à l’utilisateur
  • Ne contient pas de logique métier
  • Délègue la gestion des actions au Presenter

Exemple :

  • Page web
  • Formulaire graphique
  • Composant d’interface

3. Presenter

Le Presenter est l’intermédiaire entre le Model et la View, responsable de la logique de présentation.

Rôle :

  • Récupérer les données du Model
  • Traiter les actions utilisateur venant de la View
  • Mettre à jour la View avec les résultats
  • Contient toute la logique de présentation

Exemple :

  • Méthode loadUsers() qui récupère la liste des utilisateurs et la transmet à la View
  • Gestion des clics ou validations de formulaire

Fonctionnement global

  1. L’utilisateur interagit avec la View
  2. La View transmet l’action au Presenter
  3. Le Presenter demande les données au Model
  4. Le Model renvoie les données au Presenter
  5. Le Presenter formate les données et met à jour la View
  6. La View affiche le résultat

Différences clés avec MVC

  • Le Presenter contient la logique de présentation, alors que le Controller dans MVC est souvent plus léger
  • La View est passive dans MVP : elle ne connaît pas le Model et ne fait presque aucun traitement
  • Le flux de données est plus contrôlé et unidirectionnel

Avantages

  • Vue complètement découplée du Model
  • Testabilité facilitée (Presenter peut être testé indépendamment)
  • Flux de données clair et prévisible
  • Convient bien aux interfaces complexes

Exemple concret

Dans une application mobile :

  • Model : gestion des contacts
  • View : liste des contacts affichée à l’écran
  • Presenter : récupère les contacts et met à jour la View, gère les clics sur un contact

En résumé :
Le MVP sépare les données, l’interface utilisateur et la logique de présentation en plaçant le Presenter au centre pour orchestrer les interactions.