Question

J'ai une assez bonne idée comment chacun de ces modèles fonctionnent et connaissent quelques-unes des différences mineures entre eux, mais sont-ils vraiment si différents les uns des autres?

Il me semble que le présentateur, Présentation modèle, ViewModel et contrôleur sont essentiellement le même concept.

Pourquoi ne pourrais-je classer tous ces concepts comme les contrôleurs? Je me sens comme cela pourrait simplifier toute l'idée beaucoup.

Quelqu'un peut-il donner une description claire de leurs différences?

Je tiens à préciser que je ne comprends comment fonctionnent les patterns, et ont mis en œuvre la plupart d'entre eux dans une technologie ou d'une autre. Ce que je suis vraiment à la recherche est l'expérience de quelqu'un avec un de ces motifs, et pourquoi ils ne considèrent pas leur ViewModel un contrôleur par exemple.

Je vais vous donner quelques points de réputation pour cela, mais je suis à la recherche d'une très bonne réponse.

Était-ce utile?

La solution

Outre le déjà mentionné grand lit (Fowler & Miller) et pour répondre à votre point sur les différences entre le contrôleur / présentateur / ... du point de vue du développeur :

Controller dans MVC :

  • Controller est la composante réelle qui est appelée à la suite de l'interaction de l'utilisateur. (Développeur n'a pas à écrire du code à déléguer des appels au contrôleur.)

  • Contrôleur détermine les valeurs en quelque sorte de la vue / contexte / sac / whatever, mais vous ne diriez pas vraiment que interagit avec la vue.

  • contrôleur décide en fin de compte qui View pour afficher à l'utilisateur. Dans ce, contrôleur montre une notion explicite de la navigation de l'application flux de travail aussi.

Présentateur dans MVP :

  • Presenter a des méthodes appelées par la vue, ce qui est le contrôle de réception composante réelle lors de l'interaction de l'utilisateur. (Développeur doit écrire un code dans la vue pour appeler le présentateur.)

  • Présentateur détermine les valeurs en quelque sorte de la vue ou les recevoir de la vue sur appel. Présentateur appelle des méthodes sur la vue afin de définir son état ( remplissiez dit Josh Smith). Une vue méthode appelée par le présentateur peut ont plusieurs réglages effectués petits dans son corps.

  • Présentateur ne montre pas explicitement une notion de flux de travail d'application. Il est généralement considéré comme le contrôle de retour à la vue d'appeler.

PresentationModel dans PM :

  • PresentationModel a des méthodes appelées par la vue, ce qui est le contrôle de réception composante réelle lors de l'interaction de l'utilisateur. (Développeur doit écrire un code dans la vue afin d'appeler le PresentationModel.)

  • PresentationModel a beaucoup plus bavard communication avec Vue par rapport à un présentateur. Il contient aussi plus logique afin de déterminer la valeur de tous les paramètres à appliquer dans la vue, et effectivement mis ceux dans la vue. (Ces méthodes View Tour à tour ont presque pas de logique.)

  • PresentationModel ne montre pas explicitement une notion de flux de travail d'application. Il est généralement considéré comme le contrôle de retour à la vue d'appeler.

ViewModel dans MVVM :

  • ViewModel a des méthodes appelées (propriétés et ensemble) par la vue, ce qui est le contrôle de réception composante réelle lors de l'interaction de l'utilisateur. (Développeur doit écrire un certain code (déclarative) dans la vue afin d'appeler le ViewModel.)

  • ViewModel n'a pas explicitement une communication bavarde avec vue par rapport à PresentationModel (à savoir ne pas appeler Voir beaucoup, le cadre le fait). Mais il a beaucoup de propriétés que la carte 1 à 1 avec écran des paramètres. Il contient toujours la même logique pour déterminer la valeur de tous ces paramètres.

  • ViewModel ne montre pas explicitement une notion de flux de travail d'application. Il est généralement considéré comme le contrôle de retour à la vue d'appeler.

  • Copie en quelque sorte ce que Josh Smith dit ( http: // msdn. microsoft.com/en-us/magazine/dd419663.aspx ): modèle MVVM est un cas particulier de PM qui profite d'un cadre (comme WPF / SL) afin d'écrire moins de code.

Autres conseils

Martin Fowler a une page sur les modèles de conception d'interface utilisateur, dans lequel il définit et parle de MVC, MVP et d'autres modèles.

http://martinfowler.com/eaaDev/uiArchs.html

Controller est actif dans le contrôle de l'interface utilisateur. Par exemple, il traiterait des événements déclenchés par l'interface utilisateur et de les traiter de façon appropriée.

Présentateur d'autre part est plus passif et simplement affiche des données par le biais de l'interface utilisateur, qui gère ses propres événements, etc, ou les délégués par le présentateur à un service ou une commande.

ViewModel est un exemple spécifique d'un présentateur, conçu pour être utilisé avec la liaison WPF / Silverlight.

Présentation Modèle est un modèle qui peut être présenté directement par la vue, donc par exemple si vos modèles mettent en œuvre INotifyPropertyChanged pour la liaison de données, ils seraient modèles de présentation.

La différence entre eux est essentiellement dans la façon dont le code est bien dans la vue. Le choix entre eux est en fait un choix de la technologie pour l'application comme le PAM, WinForms, ASP MVC (2). L'idée de base de la logique de séparation de la présentation est la même.

Voici très bon article sur trois.

EDIT:

Un plus l'article -. Comparaison

Au moins dans .NET, MVP est utilisé comme un modèle de conception. Ceci est habituellement utilisé avec les applications Windows Forms, ou ASP.Net classique. Avec MVC, et MVVC, ceux-ci sont généralement utilisés avec ASP MVC, qui utilise une architecture assez différente de celle ASP.Net normale.

A mon avis, il n'y a pas de véritables différences conceptuelles entre MVP, MVVC, MVC et modèle de présentation. Il y a quelques différences détaillées, mais à la fin, il peut tous continuer à être considéré comme une configuration View Model Controller. La dénomination supplémentaire sert juste de créer une confusion, et je pense qu'il serait préférable d'adopter une terminologie qui permet une certaine latitude pour décrire un contrôleur.

Une distinction importante juste entre MVP et MVVM est la façon dont la vue ne joue pas un rôle actif dans la mise à jour de la couche intermédiaire, et est un acteur « muet » comme vue devrait être pour l'affichage, pas de comportement. Présentateur est recommandé pour les vues qui sont « complexes », i.e..

  • lorsque vous manipulez cliquez en changeant Activité ( « navigation ») est plus facile avec Presenter
  • modifier vue change en fonction de la mise à jour de la couche de données (asynch) sera mis en œuvre le mieux avec ViewModel

refs:

https://developer.android.com/topic/libraries / architecture / cycle de vie # pb lc

https: //android.jlelse .eu / pourquoi à choisir-MVVM-over-mvp-android-architecture 33c0f2de5516 entrer la description d'image ici

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