Un modèle de développement MVP se décompose en couches comme suit :
La notion de VUE
Une VUE représente la partie UI de l'application. Elle correspond à l'interface utilisateur (UI). Une VUE peut être sous la forme d'une fenêtre, d'un état, d'une page Web ou d'une fenêtre mobile.
Certaines opérations peuvent nécessiter une interaction avec l'utilisateur (affichage d'erreur, confirmation, ...), ces interactions doivent être assurées par la VUE.
- La VUE connaît la présentation.
- La VUE peut utiliser le binding pour récupérer les données à afficher depuis la couche PRESENTATION, ou lui envoyer les informations saisies ou modifiées par l'utilisateur.
- La VUE dispose d'un événement particulier pour effectuer les mises à jour nécessaires (événement "Demande de mise à jour de l'affichage"). Cet événement est appelé automatiquement lors de l'initialisation, puis sur demande de la couche PRESENTATION ou de la couche MODELE (fonction DemandeMiseAJourUI).
La notion de couche PRESENTATION
La couche PRESENTATION est une classe qui effectue la liaison entre la VUE et le MODELE. Elle organise et formate les données du MODELE à afficher dans la VUE. Elle regroupe les traitements concernant les actions de l'utilisateur.
La couche PRESENTATION n'a pas accès à la VUE, c'est-à-dire que la couche PRESENTATION ne doit pas accéder directement aux champs de la VUE.
Par contre, la couche PRESENTATION peut demander à la VUE de se mettre à jour (utilisation de la fonction
DemandeMiseAJourUI).
Une même couche PRESENTATION peut être utilisée par plusieurs VUES (cas d'une fenêtre ou d'un état affichant les données provenant d'un même MODELE, par exemple : liste de clients).
Chaque VUE (fenêtre, état) doit posséder une instance distincte de la classe PRESENTATION.
Par contre, plusieurs PRESENTATIONS peuvent partager des instances MODELE.
La couche PRESENTATION contient et décide des "données" à afficher dans la VUE. Par exemple, changer l'état d'un champ, changer la couleur d'une ligne d'un champ Table,...
Les actions de l'utilisateur sont déportées dans les méthodes de la classe PRESENTATION, qui ensuite les redirigent éventuellement vers la couche MODELE. La couche PRESENTATION regroupe ainsi tous les traitements/événements concernant les actions de l'utilisateur. Le code est donc centralisé et partageable entre différentes VUEs.
En revanche, la couche PRESENTATION n'accède pas à l'UI, donc pas de fonctions
Ouvre,
Ferme,
Info,
Erreur, etc.
A l'inverse, la VUE connaît la couche PRESENTATION. La vue peut appeler ses Méthodes, lire ses Propriétés et utiliser le Binding. Une VUE possède une et une seule PRESENTATION.
En résumé , la VUE communique avec la couche PRESENTATION :
- en appelant des méthodes de la classe.
- en écrivant ou en lisant des propriétés de la classe.
- en utilisant le DataBinding pour se lier à des propriétés de la classe.
La notion de couche MODELE
La couche MODELE contient les données "Métier" de l'application ainsi que la logique qui permet de les manipuler. Cette couche est constituée d'un ensemble d'objets basés sur des classes représentant les données à manipuler. La logique (donc les opérations) qui permet de manipuler ces données est représentée par des classes et des méthodes.
La couche MODELE est indépendante de la couche PRESENTATION et de la VUE. La couche PRESENTATION connaît sa couche MODELE, mais à l'inverse, la couche MODELE ne connaît pas la couche PRESENTATION et encore moins la VUE.
Les données à afficher dans la VUE sont contenues dans la couche MODELE.
Cependant, afin de centraliser les opérations de récupération des données, on va privilégier l'accès aux données en passant par la couche PRESENTATION plutôt que d'accéder directement aux objets de la couche MODELE. On va donc articuler la communication entre la couche PRESENTATION et la couche MODELE autour de l'association d'une classe de la couche PRESENTATION et d'une classe de la couche MODELE (à l'aide de l'attribut
<Associé>).
En résumé, la couche PRESENTATION communique avec la couche MODELE :
- en appelant des méthodes de la classe associée
- en écrivant ou en lisant des propriétés de la classe associée
La notion de couche Accès BDD
La couche d'accès aux données de la Base de Données peut être constituée :
- d'un ensemble de collections de procédures,
- d'un ensemble de classes.
Ces collections ou ces classes permettent de gérer les consultations et les écritures des données de la couche MODELE depuis et vers la base de données physique.
L'intérêt de séparer cette couche est de pouvoir modifier et faire évoluer de manière centralisée la structure logique des données et du format de stockage (BDD relationnelle, BDD SQL, fichiers XML, Webservice, ...).
Il est possible, toutefois, d'inclure cette couche dans la couche MODELE.
Ces choix dépassent le cadre du MVP.
La notion de couche Applicative
La couche Applicative permet de gérer :
- la logique de transition entre les VUEs,
- des informations communes à l'application (par exemple, centraliser la connexion à une BDD, ...),
- la couche métier de l'application.