Il existe d'autres méthodes qui ont été développées depuis MVC à savoir Model View Presenters. Here sur le site de Martin Fowler est un bon aperçu de ces modèles.
Ma propre application utilise une vue passive, car elle nous permet d'extraire une interface utilisateur et de remplacer facilement une autre. Ceci est un avantage pour nous car notre logiciel est une application CAO/FAO destinée à être utilisée avec une variété de machine de découpe de métal.
Nos formulaires sont des coques minces qui appellent une couche d'interface utilisateur. Les formulaires implémentent une interface et s'enregistrent avec la couche d'interface utilisateur. Nous avons une variété de formes utilisées à des fins différentes. Par exemple un formulaire de configuration où l'utilisateur modifie les paramètres de configuration étendus pour la machine qu'il utilise, une forme d'entrée de forme, une forme de découpe de métal où l'utilisateur positionne les formes à couper. Toutes ces formes ont une interface utilisateur distincte.
La forme de coupe de métal est également différente entre différents types de machines. On peut montrer une vue WYSIWYG d'une plaque de métal plate. Un autre est une grille de style tableur des pièces à couper dans l'ordre où ils seront coupés. Un autre montre encore les pièces positionnées sur un tuyau tournant.
La couche d'interface utilisateur à son tour prend l'entrée et exécute les commandes. Les commandes à leur tour interagissent avec le calque d'interface utilisateur et le modèle. Presque tout est géré par des objets de commande, par opposition aux appels directs par des méthodes.
Cette structure permet de connecter plusieurs interfaces utilisateur au même modèle. Au sein d'une interface utilisateur spécifique, une variété de vues peut être prise en charge. Ce que j'ai marqué comme modèle pourrait être des bibliothèques séparées. Ils ne seraient combinés qu'au niveau de la couche d'interface utilisateur et au-dessus via les composants de l'interface utilisateur référençant les différentes bibliothèques.
La hiérarchie ressemble à ceci.
- Forms Mettre en oeuvre formulaire Interfaces
- UI Mettre en œuvre Inferaces UI et interagit avec les formulaires au moyen du formulaire Interfaces
- Commande interagit avec le mode et l'interface utilisateur via les interfaces interface utilisateur.
- Interfaces UI
- Modèle
Thats la manière que je vais maintenant. Parce que je n'ai qu'une seule vue, je pense que toutes les données pour cette vue doivent provenir du seul et unique modèle. On dirait que je dois diviser ma vue en plusieurs parties pour éviter un modèle de dieu s'il pousse vraiment trop. – Tarion
Une chose que je fais est de limiter la responsabilité de CompositeModel à la gestion (d'événement) des sous-classes. – Tarion