En concevant un cadre MVC mais je ne sais pas où devrais-je mettre mes classes d'utilité. J'ai lu quelque part où il a dit que les classes d'utilité sont des classes modèles. Cette ligne de pensée est-elle correcte ou s'agit-il d'un type de classe distinct?Une classe d'utilitaires peut-elle être une classe Model dans un environnement MVC?
Répondre
Cela dépend de ce que font ces classes d'utilitaires. L'idée principale de MVC est de séparer la couche de présentation (V et C) de l'application restante (M). Si vos classes d'utilitaires traitent des éléments liés à la couche de présentation, placez-les dans un package approprié, par exemple ViewHelpers ou InputHandlers. Si les fonctions de l'utilitaire se rapportent à autre chose, voyez à quelle couche de votre modèle elles correspondent le mieux, par exemple les utilitaires DataAccess vont dans le paquet DAO tandis qu'un MailHelper peut aller dans le paquet Services, et ainsi de suite.
S'il ne s'agit pas d'une représentation de données stockées, il ne s'agit probablement pas d'une classe Model. Même dans ce cas, s'il représente encore des données stockées, mais se comporte radicalement différemment du reste de vos modèles, il peut ne pas appartenir au reste des modèles.
Les fonctions utilitaires peuvent faire partie de la classe à laquelle elles servent, soit Modèle, Vue ou Contrôleur. Si elles sont un peu plus génériques, elles vivent en dehors du design MVC.
Le modèle n'est pas seulement la base de données! – Gordon
Vous savez, quand j'ai commencé sur SO, j'ai rencontré pas mal d'arguments et de confusion sur ce que faisait le calque Model dans MVC. Après un moment, je suis venu à la réalisation qu'il y avait beaucoup de mauvaises façons de faire MVC. C'était un peu après que j'ai commencé à maintenir une ancienne base de code qui faisait MVC dans au moins trois manières différentes et mauvaises. Cependant, la chose la plus cohérente était que le Modèle ** modélisait les objets de données stockés **. Cela ne signifiait pas que c'était juste une couche ORM, mais ils devraient savoir comment ils interagissent avec les autres et comment stocker et récupérer leurs données. – staticsan
La classe de modèle peut contenir votre code d'accès aux données, la logique de l'application. donc c'est bon de placer dans le modèle.
La meilleure approche consiste à créer un dossier Utilitaire dans le dossier Modèle et à y placer une classe d'utilitaire.
J'ai lu un livre où il est dit que les modèles sont les classes d'une couche de gestion et/ou d'utilitaires. L'idée d'avoir un ViewHelper semble faire un hybride de contrôleurs et de vues. Qu'est-ce que tu penses? – rix501
@ rix501 Un contrôleur gère l'entrée de l'utilisateur depuis l'interface utilisateur et délègue les requêtes au modèle. A [ViewHelper] (http://java.sun.com/blueprints/corej2eepatterns/Patterns/ViewHelper.html) ne doit pas gérer les entrées utilisateur. L'idée principale est de séparer toute logique nécessaire à la vue pour terminer le rendu à partir de votre modèle de vue. La distinction que vous avez lue dans le livre est correcte. Le terme Utilities est juste vague. – Gordon