reliure de données établit un couplage direct entre la vue et le modèle, contourner ainsi le contrôleur. Fondamentalement, cela rompt avec le motif architectural du contrôleur de type modèle, ai-je raison de penser cela? Est-ce que cela fait des données reliant une "mauvaise chose"? P>
4 Réponses :
Dans mes données d'opinion, la liaison peut em> peut être une implémentation valide du modèle MVC car le mécanisme de liaison de données agit en tant que contrôleur dans ce cas. P>
Par exemple dans l'angulaire mentionné, il semble que la fonction $ Watch est un raccourci pour implémenter des fonctionnalités de contrôleur typiques et des fonctionnalités de type MVC. P>
Donc, à mon avis, la liaison de données est une étape d'évolution qui implémente les meilleures pratiques apprises en implémentant les contrôleurs classiques em> MVC. P>
mise à jour em> p>
mais dans le sens de modèle original, je caractérise plus la liaison de données plus comme MVP ou Vue passive . < / p>
Mais les différences ne sont pas si fortes à mon avis, car elle dépend toujours de votre technologie de l'interface utilisateur. P>
Pas nécessairement, car vous n'avez pas besoin de lier vos objets de modèle à la vue.
Ce que je fais habituellement, c'est créer des dtos simples (ou des objets de présentation) qui ne contiennent que les données que je souhaite afficher, et c'est ce que la couche de vue s'affiche.
Dans ce cas, le contrôleur conserve sa fonction de traducteur entre les actions effectuées sur les DTO et les actions sur les entités modèles sous-jacentes. P>
La base de données est une fonctionnalité supplémentaire qui supprime le code de la plaque de la chaudière des tâches souvent répétitives lors de l'utilisation de modèles MV (complètement sensibles) de mon point de vue. Regardez ici: MVC et Databinding, Quelle est la meilleure approche?
En réalité, lorsque vos données sont abstraites correctement, l'acte de repousser le contenu de vos modèles à votre assurance-chômage est une tâche répétitive qui conduit normalement à une sorte d'aides. p>
Disons-nous à appuyer sur une liste d'éléments à une combinaison de combat. Cela ne fait pas nécessairement partie du contrôleur, car vous voudrez peut-être partager de telles fonctionnalités. En poussant également la valeur du contrôle (pour le garder simple, disons que le texte d'une zone de texte) est répétitif et bidirectionnel. p>
aussi ici, vous répétez votre auto (pensez à sec) et faites la même chose et encore. P>
C'est exactement le point où la base de données entre en jeu. Cela peut prendre en charge les tâches qui sont de toute façon identiques pour des commandes simples (case à cocher, zone de texte, Combobox). Pour le contrôle de la grille et similaires peuvent être spécifiques. P>
regarder MVC & Databinding: Qu'est-ce que la meilleure approche? . Ici, je discute de ce qui pourrait être l'optimum lors de l'utilisation de la base de données en combinaison avec MVC. P>
La liaison de données ne coupe pas directement la vue et le modèle, ce n'est donc pas un mauvais chose em> ®. Il fait partie intégrante de l'architecture MVC, que le livre des modèles de conception GOF décrit succinctement au chapitre 1. P>
MVC découle des vues et des modèles en établissant un protocole d'abonnement / notify entre eux. Une vue doit s'assurer que son apparence reflète l'état du modèle. Chaque fois que les données du modèle changent, le modèle notifie des vues qui en dépendent. En réponse, chaque vue a la possibilité de se mettre à jour. Cette approche vous permet de joindre plusieurs points de vue à un modèle pour fournir différentes présentations. Vous pouvez également créer de nouvelles vues pour un modèle sans y réécriter. P>
blockQuote>
C'est une idée fausse commune que MVC est une architecture en couches (3 niveaux). Ce n'est pas. Le modèle met à jour la vue directement. Mais cela ne signifie pas que les deux sont couplés! Une conception de publication / souscription conserve le modèle et la vue découplée. P>
Cette conception plus générale est décrite par le modèle Strong> Observateur Strong> Conception. P>
blockQuote>