Question

Après avoir lu un certain temps et regarder des vidéos Google IO, je suis toujours confus sur la façon dont MVP a trait à l'activité et les lieux.

J'ai trouvé un fil a affiché un certain temps -> GWT 2.2 MVP vs GWT 2.1 Activités-Places

« architecture MVP. MVP est le concept, et l'une des façons de le faire est le cadre lieux-activités »

J'entends aussi « Un présentateur est analogue à une activité »

Nous pouvons donné "Activité et lieux sans MVP"

On peut mélanger dans « l'activité et les lieux avec MVP »

« MVP est rien, mais la façon dont nous organisons notre projet afin que nous puissions tester et organiser facilement le code »

Je suis en train de trouver des trucs comme ça -> http: // Code .google.com / p / GWT-plate-forme /

Je suis vraiment confus. Je veux un fil d'un arrêt pour mettre fin à la confusion.

Était-ce utile?

La solution

TL; DR: Lieux et activités ne sont aucunement liés avec MVP

.

Lieux est sur la navigation dans votre application: vous passez d'un endroit à l'autre. Et Activités builds sur des lieux à l'aide dans la liaison « ce que vous voyez » avec « où vous êtes »:

  • quand je suis sur la page d'accueil pour le SO, la partie principale affiche la liste des questions dans tous les sujets, le haut du côté droit montre mes tags favoris et me aide des filtres de balise de configuration, puis ci-dessous est un add et ci-dessous le module complémentaire est une liste des balises récentes, une liste des badges récents.
  • sur cette page question, la partie principale montre la question et ses réponses, le haut du côté droit est remplacé infos sur les balises de la question, suivie d'un complément, des questions liées et des questions connexes.

Chacun de ces « parties » (région) sont gérés par ActivityManagers qui écoutent PlaceChangeEvents et demander leur ActivityMapper associé qui Activity à montrer dans cette région.

Il est tout au sujet de la navigation.

Il n'y a pas de relation avec MVP (malgré ce que disent les documents officiels). Si vous utilisez MVP cependant, vous aurez probablement vous faire des activités « présentateurs », dans le contrôle d'une « vue » (celui de l'activité passera retour à l'AcceptsOneWidget reçu en argument à sa méthode start). Ce n'est pas une règle si, et, par exemple, Google est expérimentation, dans le échantillon mobilewebapp, avec le découplage des activités et des présentateurs.

Autres conseils

MVP signifie Modèle , Afficher , Présentateur , il est un modèle de codage. Il est juste une évolution du modèle MVC ( Modèle , Afficher , Contrôleur ). Voir MVC wikipedia .

La différence entre MVP et MVC est que MVP, le modèle et la vue ne se connaissent pas. Dans MVP votre point de vue doit être aussi stupide que possible. Toutes les interactions sont gérées par le présentateur. Il est juste une façon d'organiser votre code correctement.

Certaines personnes ont créé des cadres pour réduire la quantité de travail à faire pour organiser votre code de cette façon. Jetez un coup d'oeil à différentes MVPimplementations. Il est facile de les trouver sur le web.

MVP rend votre code plus facile à tester que vous pouvez facilement remplacer votre vue par une autre mise en œuvre (généralement un Mock) qui sera fausse le comportement ou votre point de vue. Ainsi, vous n'avez pas besoin d'exécuter vos tests avec un environnement de navigateur (vues GWT sont des vues en HTML). Donc, vos tests tourneront plus vite.

documents Google dit:

Le cadre Activités et lieux vous permet de créer des URL Bookmarkable dans votre application.

Activités et lieux est beaucoup plus qu'un simple cadre de MVP. Néanmoins Activité est un Présentateur .

public interface Activity {

  String mayStop();

  void onCancel();

  void onStop();

  void start(AcceptsOneWidget panel, EventBus eventBus);
}

Vous pouvez utiliser l'interface d'activité pour vos présentateurs sans utiliser Lieux et d'autres objets de Google. Mais dans ce cas, vous devriez probablement coder une sorte d'activité responsable de votre propre qui sera responsable de démarrer et d'arrêter vos activités. En début et de fin que vous voulez probablement créer votre point de vue, l'ajouter au dom, enregistrez vos gestionnaires d'événements, etc. Et vous voulez détruire tout cela lorsque vous arrêtez.

Dans d'autres implémentations MVP vous pouvez trouver bind () et unbind () qui ont le même rôle.

Le pouvoir de la mise en œuvre de l'activité Lieu Google provient de tous les objets derrière le La place objet qui fera de votre début d'activité ou d'arrêt et qui traitera de l'histoire.

Lieu que d'autres personnes mentionnées ci-dessus est juste une représentation de vous URL.

Il y a beaucoup d'objets impliqués dans la mise en œuvre Lieu d'activité de Google. Voici un schéma pour vous aider à comprendre. Vous verrez que l'activité ne représente qu'une petite partie de l'ensemble. Vous trouverez quelques détails sur mon blog dans cet article

entrer image description ici

Les activités sont Présentateurs. Les places sont juste un wrapper pour jeton d'histoire.

La confusion a commencé avec Google IO vidéo, où GWT concept de MVP a été introduit, mais aucune mise en œuvre a été donnée. Alors, les gens ont commencé à rouler leurs propres moyens. Ensuite, Google a écrit les 2.1 docs où ils détaillées le concept et seulement donné quelques exemples de code à télécharger. Plus tard dans 2.2 ils ont présenté leur mise en œuvre complète, activités et al.

Donc, si vous voulez aller la route MVP vous devez choisir votre implémentation. Seraient probablement activités mieux, car il est l'officiel.

Tant que vous considériez comme deux modèles de développement, il est assez facile de les garder séparés. MVP est un modèle pour la séparation des préoccupations et des activités et de lieux est un outil pour l'URL et la gestion de l'histoire.

Voici un bon article pour aider à éliminer toute confusion,

Il y a deux dimensions indépendantes Design pattern - Sans motif - MVP

Navigation et écran traversal - Pas de navigation - Activités et lieux

Vous pouvez avoir une application qui peut suivre une des opérations suivantes

  • Non MVP, Non Activités et lieux
  • Seul MVP
  • Seules les activités et lieux
  • MVP avec Activités et lieux
scroll top