Section courante

A propos

Section administrative du site

Introduction

MVP, tirant son nom de l'abréviation de l'anglicisme Model-View-Presenter, est un pattern d'architecture logicielle utilisé pour structurer des applications avec interface utilisateur, surtout lorsqu'on veut séparer la logique de présentation de la logique métier et faciliter les tests unitaires. Le sigle signifie :

Contrairement à MVC, où le contrôleur peut réagir directement aux événements de l'UI, dans MVP, la vue est passive et délègue toute action au Presenter.

Composantes détaillés

Fonctionnement

L'utilisateur interagit avec la View (exemple clic sur un bouton).

La View informe le Presenter de l'action.

Le Presenter interagit avec le Model, récupère ou met à jour les données.

Le Presenter met à jour la View avec les nouvelles données ou états.

Diagramme simplifié :

La flèche bidirectionnelle ViewPresenter correspond aux événements et mises à jour.

La flèche PresenterModel correspond à la récupération ou modification des données.

Avantages

Séparation stricte des responsabilités → code plus maintenable.

Testabilité élevée → le Presenter peut être testé sans la vue réelle.

Réutilisation possible → un Presenter peut servir plusieurs vues.

Vue passive → réduit le couplage et simplifie l'UI.

Exemple

Voici un exemple simple en C# (WinForms) :

  1. // Model
  2. public class Utilisateur
  3. {
  4.     public string Nom { get; set; }
  5.     public string Prenom { get; set; }
  6. }
  7.  
  8. // View Interface
  9. public interface IUtilisateurView
  10. {
  11.     string NomComplet { set; }
  12.     event EventHandler ClicAfficher;
  13. }
  14.  
  15. // Presenter
  16. public class UtilisateurPresenter
  17. {
  18.     private readonly IUtilisateurView _view;
  19.     private readonly Utilisateur _utilisateur;
  20.  
  21.     public UtilisateurPresenter(IUtilisateurView view)
  22.     {
  23.         _view = view;
  24.         _utilisateur = new Utilisateur { Prenom = "Jean", Nom = "Dupont" };
  25.         _view.ClicAfficher += OnClicAfficher;
  26.     }
  27.  
  28.     private void OnClicAfficher(object sender, EventArgs e)
  29.     {
  30.         _view.NomComplet = $"{_utilisateur.Prenom} {_utilisateur.Nom}";
  31.     }
  32. }


Dernière mise à jour : Lundi, le 22 décembre 2025