Was ist der Unterschied zwischen MVP und sauberer Architektur?

13

Die Frage ist selbsterklärend, um nur meine Gedanken hinzuzufügen:
Soweit ich gelesen habe, hat die Präsentationsebene in Clean Arch die gleiche Verantwortung wie in MV in MVP.

Wie entscheidet man sich, ein Muster anstelle des anderen zu wählen?

Mehrdad Shokri
quelle
MVP ist Teil einer sauberen Architektur. Dieser Artikel sollte gelesen werden androidwave.com/android-mvp-architecture-for-beginners-demo-app
Surya Prakash Kushawah

Antworten:

15

Was Bob Martin " saubere Architektur " nannte, ist eher eine "Meta-Architektur", eine Richtlinie auf hoher Ebene zum Erstellen von Schichtenarchitekturen. Es sagt nichts dergleichen aus

"Es muss eine Model-Ebene, eine View-Ebene und eine Presentation-Ebene geben, und sie müssen mit MVP implementiert werden. "

Es enthält nur allgemeinere Regeln für die Ebenen wie "Abhängigkeiten müssen von den äußeren Kreisen zu den inneren Kreisen gehen, nicht umgekehrt" . Und da in MVP die Ansicht (= Benutzeroberfläche) den Presenter möglicherweise kennt, der Presenter jedoch durch eine Schnittstelle von der Ansicht entkoppelt ist, ist MVP nur eine von vielen möglichen Lösungen, die diese Regel erfüllen.

Natürlich kann man MVP in einem "Clean Architecture" -System verwenden, aber dies ist nicht der einzige richtige Ansatz. Jedes UI-Design, bei dem die "inneren Schichten" nichts Besonderes über die UI wissen und bei dem die UI auch den anderen in Bob Martins Artikel beschriebenen "Clean Architecture" -Regeln folgt, ist in Ordnung.

Doc Brown
quelle
Wenn ich dem MVP-Muster folge, ist dann garantiert, dass ich nicht gegen die Regeln für saubere Architektur verstoßen habe?
Mehrdad Shokri
1
@Mehrdad: nein. MVP hilft Ihnen nur dabei, die "Abhängigkeitsregel" richtig zu definieren, und zwar nur zwischen den Ebenen "View & Presenter" sowie zwischen "Presenter" und "Model", nicht weniger und nicht mehr. Sie müssen sich immer noch um alle anderen Dinge kümmern, die in Bob Martins Artikel beschrieben werden. Beispielsweise hindert MVP allein niemanden daran, komplexe Datenstrukturen zwischen Ebenen zu übergeben (im Gegensatz zu den in diesem Artikel erwähnten einfachen Datenstrukturen, die zum Überschreiten von Grenzen verwendet werden sollten).
Doc Brown