Interprétation idéale de l'architecture MVC
Bonjour,
J'essaye de depuis quelques temps de comprendre le principe du MVC.
J'ai donc suivi des tutoriaux sur le net et me suis documenté.
Ce message s'adresse donc aux personnes ayant lu le livre "Swing" de la collection "les cahiers du programmeur" publié chez eyrolles.
p167 est présenté un diagramme de classe MVC dit idéal puis p175 un diagramme de classes simplifié.
Quel aurait été le diagramme de classe MVC idéal avec les classes HomeController, FurnitureController, et CatalogController (p175)?
Par ailleurs, il me semble avoir compris que les MVC permettait de rendre les couches indépendantes et j'ai du mal saisir pourquoi c'est au contrôleur d'instancier la vue, pouvez vous m'expliquer ?. (J'aurais plutôt la vue être instanciée ailleurs et passée au contrôleur ensuite)
Ensuite, si je désirais rajouter une base de données. Les interrogations à cette dernière interviendraient dans quelle entité du MVC ? (Je ferais ça dans le modèle mais je vois bien aussi le contrôleur le faire et ensuite le passer au modèle qui ne serait finalement plus qu'un cache)
Merci d'avance pour vos réponses.
De la mauvaise utilisation du terme MVC pour le dev Web
L'interprétation idéale de l'architecture MVC, c'est de ne pas parler de développement Web ! Si il y a bien un terme qui a été vidé de sa substance, c'est bien celui là, avec l'arrivée du développement Web.
Pour rappel, le pattern MVC est issu du monde SmallTalk et repose fondamentalement sur une orientation objet. Ensuite, c'est un pattern, et en tant que tel, il offre une solution à un problème : celui d'assurer une corrélation/interaction entre les données d'une part, et les vues sur ces données d'autre part. Une communication par événements fait souvent office de glue pour tout cela.
Les tutoriels fleurissent de toutes parts sur les frameworks MVC en PHP, en JAVA, en Ruby, etc. Leurs auteurs ne s'étonnent même pas de l'architecture MVC qu'il nous présentent fièrement. Ci-dessous un exemple qui nous est proche :
http://c-maneu.developpez.com/tutori...intro/#LII-B-2
Pourtant, on y voit clairement qu'un modèle peut notifier la vue de ses changements. En effet, il semble pertinent que la mise à jour des données implique de rafraîchir toutes les vues sur lesdites données. Or, il est totalement impossible de porter ce principe au développement Web ! En outre, la difficulté des auteurs à définir ce que contient précisément un contrôleur (en général un fourre-tout) aurait du leur mettre la puce à l'oreille sur cette terrible méprise.
Du coup, de quoi parlent tous ces tutoriaux ? Et bien tout simplement d'un meilleur découpage de l'application pour faciliter l'évolutivité et la maintenance du code. A ce titre, ces frameworks ont du mérite. Mais de grâce, arrêtons de parler de MVC là ou il n'y en a pas, cela évitera aux novices bien des écueils.