2010-04-29 9 views
5

En mode MVC classique, le modèle notifie l'affichage des modifications apportées. En C# cela signifie que je dois sous-classer la vue qui m'intéresse et dans le registre de classe sous-classé à l'événement du modèle. Par exemple, si je devais implémenter MVC en utilisant C# et Winforms, je devais sous-classer la classe TextBox, puis m'enregistrer dans le constructeur de MyTextBox pour les événements du modèle. Ai-je raison? Comment cela a-t-il été publié dans Smalltalk? Faut-il également sous-classer chaque vue afin d'enregistrer les événements du modèle, ou existe-t-il un moyen d'ajouter dynamiquement des événements aux vues à la volée?Question à propos de Classic MVC

Merci

Répondre

1

Pour répondre à la sous-question sur la façon dont Smalltalk (à partir de laquelle MVC origine) gère ceci: à l'origine (ce qui est Smalltalk-80, où Trygve Reenskaug mis en œuvre MVC), il était en effet nécessaire de sous-classe superclasses vue pour votre vue spécifique pour l'enregistrer en tant qu'abonné pour modifier les événements d'une sous-classe de modèle concret. Les contrôleurs de Smalltalk devaient uniquement déléguer ou répartir les événements de fenêtre (en particulier le clavier et la souris) sur le modèle. Fondamentalement, vous pouvez dire que les contrôleurs ont modifié les objets du modèle, et que la vue les a seulement montrés. Cependant, le concept de Dynamic Values, ou ValueModels tel qu'il a été appelé, a rendu cette approche obsolète dans VisualWorks Smalltalk. Maintenant, vous pouvez créer un framework GUI standard, pas besoin de sous-classer plus, et chaque vue serait capable de s'enregistrer en tant qu'observateur dans une classe de modèle abstraite. Le modèle pour la vue ne serait plus une classe de modèle mais un modèle de valeur avec une interface standard. Plus à ce sujet ici: http://st-www.cs.illinois.edu/users/brant/papers/ValueModel/ValueModels.htm

+0

Nice (+1) Cela dit, il y a une raison pour laquelle Adele n'a jamais écrit le livre et seulement «L'art noir de la programmation MVC» pour «splayer des choses .... Le contrôleur toujours pollué avec des informations spécifiques à la vue et au modèle, ce qui a conduit à la modification des visualworks - également à d'autres modèles plus récents comme MVP (Model-View-Presenter) –