Question

Dans ma demande, j'ai plusieurs composants qui doivent connaître les uns les autres, comme une barre de menu et une barre d'outils que les deux ont besoin de connaître la table pour ajouter ou supprimer des emplois et aussi pour savoir quel travail est sélectionné .

Alors, j'ai créé un objet appelé guiMediator que je passe à tous les objets et ils s'inscrire avec elle afin qu'ils puissent communiquer entre eux en utilisant cet objet. Il est également responsable des événements lorsque le feu de nouveaux emplois sont ajoutés ou les travailleurs de base terminent leur travail.

Comme il sait beaucoup de choses sur le système, est ce type d'utilisation trop de responsabilités dans un seul endroit ou est-ce l'utilisation correcte du motif?

Était-ce utile?

La solution

Normalement, j'utiliser le modèle de commande pour quelque chose comme ça:

  1. L'utilisateur clique sur le bouton "Foo" sur la barre de menu, qui exécute la FooButtonClickedCommand.
  2. FooButtonClickedCommand fait ce qu'il est censé faire, modifie alors la vue (barre de menu, tables, etc.) de façon appropriée.

Ainsi, vos commandes connaissent tous vos composants de vue, mais la seule chose que vos composants de vue ont besoin de savoir est ce qui commande à exécuter est fait par l'utilisateur une action donnée.

Autres conseils

J'utiliser une vue passif que vous pouvez lire sur .

  • Vous placerait chaque forme derrière une interface
  • Chaque forme ne s'enregistrer avec un ou plusieurs objets de l'interface utilisateur
  • L'objet de l'interface utilisateur doit être organisée naturellement, comme le programme d'installation, entrée, affichage, etc. Un traitement de texte ne peut avoir une interface objet pour chaque document. Alors qu'un contrôleur de la machine peut avoir plusieurs objets pour chaque écran.
  • L'interface sont mis en œuvre des coques minces en passant sur les événements aux objets de l'interface utilisateur et d'exposer les contrôles de présentation, dessin des surfaces à l'objet de l'interface utilisateur.
  • UIObject puis prendre l'entrée et qui figure sur l'objet commande à exécuter
  • L'objet de commande mettra à jour le modèle, puis dire un ou plusieurs objets de l'interface utilisateur de mettre à jour la vue.
  • Les UIObjects mettent à jour les vues.

Notez que nulle part ne rien au-delà de l'interface interface utilisateur sait sur les boutons, cases à cocher, etc.. Vous utilisez l'interface pour abstraire la mise en œuvre effective.

Cela vous donnera plusieurs avantages. D'abord, il documentera la façon dont votre code interagit avec l'interface utilisateur, vous donner un endroit pour mettre en œuvre des objets fantaisie à utiliser pour les tests automatisés, et enfin permettre à beaucoup plus de latitude pour changer l'interface utilisateur.

Par exemple en remplaçant les panneaux cliquables au lieu de boutons de commande. Le formulaire sera alors juste commencer à passer les événements de clic des panneaux à la place du bouton. La forme peut rester dans l'ignorance de la commande réelle chaque widget est censé faire. L'interface objet prend soin de cela.

Sons mieux que l'alternative ... Mais bon, je me suis marié la soeur moins laide; -)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top