Que sont MVP-vue Passive et MVP-contrôleur de supervision

Veuillez décrire avec un exemple simple, les différences entre MVP-Passive View et MVP-Supervising controller. Il serait préférable de montrer comment les données avec contrôle sont liées et l'entrée est validée en utilisant les deux techniques mvp - vue Passive et contrôleur de supervision. Merci

32
demandé sur Raghav 2011-03-21 21:18:56

1 réponses

La différence est dans les mises à jour de la couche de vue.

À partir de la page Model-View-Presenter pattern sur MSDN:

Lorsque le modèle est mis à jour, la vue doit également être mise à jour pour refléter les modifications. Voir les mises à jour peuvent être traitées de plusieurs façons. Les variantes Model-View-Presenter, Passive View et Supervising Controller, spécifient différentes approches pour implémenter les mises à jour de vue.

Dans vue Passive , le présentateur met à jour la vue pour refléter les modifications dans le modèle. L'interaction avec le modèle est exclusivement géré par le présentateur; la vue n'est pas au courant des changements dans le modèle.

Dans Supervising Controller , la vue interagit directement avec le modèle pour effectuer une liaison de données simple qui peut être définie de manière déclarative, sans intervention du présentateur. Le présentateur met à jour le modèle; il manipule l'état de la vue uniquement dans les cas où une logique D'interface utilisateur complexe qui ne peut pas être spécifiée de manière déclarative est requise. Des exemples de la logique D'interface utilisateur complexe peut inclure la modification de la couleur d'un contrôle ou le masquage/affichage dynamique des contrôles. La Figure 1 illustre la vue logique de la vue Passive et des variantes de contrôleur de supervision.

La décision d'utiliser Passive Vue ou Supervision du Contrôleur dépend principalement de la façon vérifiable vous voulez que votre demande puisse être. Si la testabilité est une préoccupation principale dans votre application, la vue Passive peut être plus appropriée car vous pouvez tester toute la logique de L'interface utilisateur en tester le présentateur. D'un autre côté, si vous préférez la simplicité du code à la testabilité complète, la supervision du contrôleur peut être une meilleure option car, pour de simples modifications de L'interface utilisateur, vous n'avez pas besoin d'inclure du code dans le présentateur qui met à jour la vue. Lorsque vous choisissez entre la vue Passive et le contrôleur de supervision, tenez compte des éléments suivants:

  • les deux variantes vous permettent d'augmenter la testabilité de votre logique de présentation.
  • la vue Passive fournit généralement un test plus grand surface que le contrôleur de supervision car toute la logique de mise à jour de la vue est placée dans le présentateur.
  • Le contrôleur de supervision nécessite généralement moins de code que la vue Passive car le présentateur n'effectue pas de mises à jour de vue simples.

Autres lectures:

Passif Voir:

Http://martinfowler.com/eaaDev/PassiveScreen.html

Http://codebetter.com/jeremymiller/2007/05/31/build-your-own-cab-part-4-the-passive-view/

La Supervision du contrôleur:

Http://martinfowler.com/eaaDev/SupervisingPresenter.html

Http://codebetter.com/jeremymiller/2007/05/25/build-you-own-cab-part-3-the-supervising-controller-pattern/

56
répondu dantuch 2013-08-26 22:26:40