Quelle est la différence entre MVP et une architecture propre

13

La question est explicite, juste pour ajouter mes réflexions:
Pour autant que j'ai lu, la couche de présentation dans Clean arch a la même responsabilité que dans MV dans MVP.

Comment l'un décide-t-il de choisir un modèle au lieu de l'autre?

Mehrdad Shokri
la source
MVP fait partie d'une architecture propre, Cet article doit être lu androidwave.com/android-mvp-architecture-for-beginners-demo-app
Surya Prakash Kushawah

Réponses:

15

Ce que Bob Martin a appelé " Architecture propre " est plus une "méta-architecture", une ligne directrice de haut niveau pour la création d'architectures en couches. Il ne dit rien de tel

"Il doit y avoir une couche Model, une couche View et une couche Presentation, et ils doivent être implémentés en utilisant MVP ",

il ne contient que des règles plus générales pour les calques comme "les dépendances doivent aller des cercles extérieurs aux cercles intérieurs, et non l'inverse" . Et comme dans MVP, la vue (= UI) peut connaître le présentateur, mais le présentateur est découplé de la vue par une interface, MVP n'est qu'une des nombreuses solutions possibles qui remplissent cette règle.

Bien sûr, on peut utiliser MVP dans un système "Clean Architecture", mais ce n'est pas la seule approche correcte. Toute conception d'interface utilisateur où les "couches internes" ne connaissent rien de spécial à propos de l'interface utilisateur, et où l'interface utilisateur suit également les autres règles d '"architecture propre" décrites dans l'article de Bob Martin, ira bien.

Doc Brown
la source
si je suis le modèle MVP, est-il garanti que je n'ai pas violé les règles de l'architecture propre?
Mehrdad Shokri
1
@Mehrdad: non. MVP vous aide simplement à obtenir la bonne "règle de dépendance", et seulement entre les couches View & Presenter, ainsi qu'entre Presenter et Model, ni plus ni moins. Vous devez toujours prendre soin de toutes les autres choses décrites dans l'article de Bob Martin. Par exemple, MVP à lui seul n'empêche personne de passer des structures de données complexes entre les couches (contrairement aux structures de données simples mentionnées dans cet article qui devraient être utilisées pour franchir les frontières).
Doc Brown