Articles

MVP architectural pattern

Dans cet article, nous allons découvrir quelque chose sur le modèle MVP, il est hérité du modèle MVC. Mais certainement, il a quelques changements par rapport au modèle MVC. Nous comprendrons donc comment l’utiliser, comment différencier le motif MVC du motif MVP.

Commençons.

  • Problème d’analyse
  • Définition du motif MVP
  • Quand utiliser
  • Avantages&Inconvénient
  • Emballage

Problème d’analyse

La mise en garde qui est née du motif MVP est la même que celle avec Modèle MVC. Mais MVP est utilisé pour éviter certains inconvénients du modèle MVC tels que:

  • Dans le modèle MVC, la vue et le modèle peuvent interagir. Ainsi, nous validons généralement les données du modèle ou utilisons la logique de données en vue. Cela rend donc les tests unitaires automatisés difficiles.
  • Il est pertinent pour la sécurité.

Définition du motif MVVM

Selon wikipedia.com , nous avons la définition du modèle MVP:

MVP pattern is a derivation of the Model-View-Controller (MVC) architectural pattern, and is used mostly for building user interfaces.In MVP, the presenter assumes the functionality of the middle-man.In MVP, all presetation logic is pushed to the presenter.

Et le modèle MVP est né au début des années 1990 chez Taligent, une coentreprise d’Apple, IBM et Hewlett-Packard.

Voici le contenu de chaque partie du modèle MVP.

  • Le modèle comporte des entités et des services.

    Entities est utilisé pour contenir des données qui sont mappées avec la table dans la base de données pour utiliser d’autres raisons.

    Les services, peuvent être utilisés modèle DAO, ou modèle de référentiel, sont une couche mince entre la couche d’application et la couche d’accès aux données. Ils gèrent normalement les opérations CRUD avec une base de données locale ou distante.

  • La vue a des responsabilités qui interagissent avec les utilisateurs.

    Il ne contient aucune logique. Il acheminera les entrées et les commandes de l’utilisateur (événements) vers le présentateur.

    La Vue a généralement une référence à son présentateur.

  • Le Présentateur est la partie intermédiaire entre la vue et le modèle. Il jouera le même rôle que le contrôleur dans le modèle MVC.

    Toute la logique métier, la logique de données, la validation des entrées, reçoit des événements des Vues, convertit les données de la Vue en Modèle ou du Modèle en vue est implémentée dans Presenter.

    Par rapport à la Vue et au Contrôleur dans le modèle MVC, la Vue et le Présentateur présents dans le modèle MVP sont entièrement découplés l’un de l’autre et communiquent au moyen d’une interface. (Le Présentateur interagit avec les Vues via l’interface de vue, cela signifie que le Présentateur peut effectuer toutes les tâches de présentation et de navigation sans aucune dépendance de la technologie d’interface utilisateur utilisée)

    Et nous avons un diagramme de séquence du modèle MVP:

Quand utiliser

  • Notre écran a bi-directional-flow, cela signifie que les interactions utilisateur doivent demander quelque chose à notre modèle, et le résultat de cette demande affectera la vue.

  • La vue affectée par les mises à jour du modèle est très limitée.

  • Le modèle MVP n’est pas utilisé dans le cas où l’interface utilisateur est mise à jour sans interactions utilisateur, comme la mise à jour de l’interface utilisateur lorsqu’un événement se produit dans le modèle, cette approche est plus proche de MVVM que de MVP.

Avantages&Inconvénient

  1. Avantages
    • La Vue n’interagit pas directement avec le Modèle. Cela isole mieux l’implémentation de la vue que dans MVC et permet des tests unitaires automatisés plus faciles du Présentateur et du modèle.

    • La possibilité de changer l’interface utilisateur du Web vers la fenêtre ou le Mobile est très facile.

    • Faible coût de maintenance

  2. Inconvénients
    • Le présentateur a tendance à s’étendre à une énorme classe omnisciente si nous ne sommes pas assez prudents et ne cassons pas notre code selon le Principe de responsabilité unique.

    • Complexité accrue.

    • Courbe d’apprentissage supplémentaire.

Certains modèles pertinents pour le modèle MVP

  • Application Controller – Si les présentateurs interagissent avec un contrôleur d’application, les présentateurs n’ont pas besoin de flux de page ni de logique de navigation à l’écran. Cela facilite la mise à jour du flux de page.

  • Observer pattern

Emballage

  • L’utilisateur final interagit uniquement avec la vue.

  • Une vue n’est mappée qu’à un seul présentateur.

  • La vue fait référence au présentateur mais elle n’a aucune référence au modèle. Et le présentateur est également conscient de la vue qui lui est associée.

  • Le motif permet une communication bidirectionnelle entre la Vue et le Présentateur.

  • Il existe deux autres implémentations de modèle MVP telles que la Vue passive et le Contrôleur de supervision.

    • La vue passive est entièrement contrôlée par le Présentateur. En implémentant la vue passive MVP, il est beaucoup plus facile de gérer la concurrence et le multithreading.

    • Dans la Supervision du Présentateur, la Vue interagit directement avec le Modèle pour effectuer toute liaison de données simple pouvant être définie de manière déclarative, sans le Présentateur. Le Présentateur met à jour le modèle. Il ne modifie l’état de la vue que lorsque la logique d’interface utilisateur complexe qui ne peut pas être spécifiée de manière déclarative est requise.

    • Comparé à d’autres variantes de MVP, telles que la vue passive, le modèle de présentateur Supervisant rend le code plus simple plus prioritaire que la testabilité complète. Le modèle de présentateur supervisant nécessite moins de code que les autres modèles MVP car il utilise la liaison de données. Le code est plus facile à maintenir car les modifications simples de l’interface utilisateur ne nécessitent pas de modifications de code dans le Présentateur pour mettre à jour la vue.

Se référer:

https://www.linkedin.com/pulse/mvp-architecture-pattern-small-article-khaled-kassem/

Book Architectural Patterns_ Uncover essential patterns in the most indispensable realm of enterprise architecture

https://www.oreilly.com/library/view/architectural-patterns/9781787287495/38abcb95-0392-4127-a3fa-b80ac2807aa9.xhtml

The other idea about Presenter in MVP pattern and Controller in MVC pattern

http://hannesdorfmann.com/mosby/mvp/

Choose MVP pattern over MVC pattern

Why Do You Need to Choose MVP Over MVC Android Architectural Pattern?

Examples for MVP pattern

http://aviadezra.blogspot.com/2008/10/model-view-presenter-design-pattern.html

https://www.raywenderlich.com/7026-getting-started-with-mvp-model-view-presenter-on-android

https://www.linkedin.com/pulse/when-use-mvc-mvp-mvvm-nothing-ahmed-adel/

A Model View Presenter (MVP) implementation with ASP.NET

iv j’ai essayé de le faire, mais j’ai essayé de le faire.10)