Forums Développement Multimédia

Les formations Mediabox
Les formations Mediabox

Design Pattern MVC

Par gnicos (Nicolas Gauville), le 09 septembre 2012

Le MVC (acronyme de “Model-View-Controller”) est l'un des Design Pattern les plus répandus. Et pour cause, celui-ci permet d'être très efficace et d'avoir un code très organisé. Dans cette page, nous allons découvrir le fonctionnement du pattern “MVC”.

I. Présentation du MVC

Le schémà ci-dessus montre un exemple très simple de code structuré en MVC, et non un schémà global de l'architecture générale de ce design-pattern.

L'idée de base, c'est donc, vous l'aurez compris, de découper notre code en trois parties : Le modèle, la vue, et le contrôleur. Tout notre code sera ainsi réparti dans ces trois parties, qui vont interagir pour créer le rendu final. Commençons par voir chacune des trois parties d'un peut plus près.

a) Le modèle, bibliothèque d'informations

Le modèle est la partie du programme qui va traiter et récupérer les données. C'est dans le modèle que nous pourrons par exemple effectuer une requête SQL ou lire le contenu d'un fichier. Le modèle doit ainsi présenter une liste de méthodes permettant l'accès aux données, et éventuellement une partie du traitement de celles-ci.

Le modèle sera commandé par le contrôleur, et pourra recevoir des évènements de la vue (les actions de l'utilisateur, en général). Dans certains cas, le modèle peut également envoyer les informations directement à la vue, sans passer par le contrôleur.

b) Le contrôleur, coeur du système

Le contrôleur doit utiliser les modèles et vues pour gérer l'application. C'est cette partie du code qui va aller chercher les données dans un modèle, et utiliser les vues pour les transmettre à l'utilisateur. Le contrôleur doit assurer la synchronisation de tous les évènements, et constituer la partie logique du programme.

Le contrôleur va donc devoir gérer les modèles et vues nécessaires à l'application. En terme général, un contrôleur sera amené à utiliser plusieurs modèles, et éventuellement plusieurs vues.

c) La vue, partie graphique

La vue constitue l'interface entre le programme et l'utilisateur. La vue doit, dans un premier temps, afficher les informations, fournies par le modèle où le contrôleur. Ensuite, la vue doit également transmettre les éventuelles actions de l'utilisateur au contrôleur.

La plupart du temps, la vue est gérée directement par le contrôleur, même s'il arrive que les informations d'un modèle soient envoyées à une vue sans passage par un contrôleur.

II. Avantages et inconvénients du MVC

La clarté

La clarté du code est souvent le premier avantage du MVC. En effet, chaque partie est organisée de façon parfaitement logique, et la séparation permet ainsi d'avoir un code beaucoup plus cohérent.

Parcourir le code

Là encore, le fait de séparer le code permet de gagner énormément de temps. Dans le cas de la conception d'un site par exemple, les injections SQL, le PHP et le HTML sont ainsi parfaitement séparés. Ainsi, lorsque l'on doit modifier la partie graphique par exemple, nous n'avons pas à relire le code logique ou l'accès aux données.

Le travail en équipe

Le travail en équipe est également simplifié par le MVC, dans la mesure où chaque partie peut être modifiée indépendamment. Là encore, une vue pourra être complètement reconstruite par exemple, sans toucher au Contrôleurs ou Modèles.

Maintenance

La séparation logique du code permet également une maintenance beaucoup plus facile, dans la mesure ou chaque partie logique est indépendante des autres. De la même façon, les modèles peuvent, par exemple, être utilisés par plusieurs contrôleurs, ce qui rends le code général plus flexible, et donc plus facile à modifier.

Limites de flexibilité

La flexibilité du MVC limite malheureusement sont efficacité dans certains cas. Pour parer à cela, d'autres composants sont parfois ajoutés permettant un contrôle plus flexible de l'application, notamment dans le développement web.

Ces autres composants vont, en général, permettre d'autres interactions entre les trois parties du code, de façon simplifier la structure de l'application.

Dans le cas d'une application Web, il n'est pas rare qu'un moteur de template et un système de langue soient utilisés avec le MVC, permettant ainsi une séparation absolument totale du code. Les vues, par exemple, ne contiendrons ainsi plus que du HTML, et aucun code PHP, ni aucun texte.

III. Tutoriels sur son implémentation

IV. Conclusion

Nous avons ainsi pu voir de manière très globale le fonctionnement du Design Pattern “MVC”.