Яка різниця між MVP та чистою архітектурою


13

Питання самопояснювальне, лише щоб додати мої думки:
Наскільки я прочитав, презентаційний шар у «Чистій арці» несе таку саму відповідальність, як і MV у MVP.

Як один вирішує вибрати один візерунок замість іншого?


MVP - частина чистої архітектури, цю статтю слід прочитати androidwave.com/android-mvp-architecture-for-beginners-demo-app
Surya Prakash Kushawah

Відповіді:


15

Те, що Боб Мартін назвав « Чиста архітектура » - це більше «мета архітектура», керівний принцип на високому рівні для створення шаруватих архітектур. Це нічого не говорить

"Повинно бути шар моделі, шар перегляду та шар презентації, і вони повинні бути реалізовані за допомогою MVP ",

він містить лише більш загальні правила для шарів типу "залежності повинні йти від зовнішніх кіл до внутрішніх кіл, а не навпаки" . А оскільки в MVP View (= UI) може знати Presenter, але презентатор від'єднаний від View через інтерфейс, MVP - це лише одне з багатьох можливих рішень, яке відповідає цьому правилу.

Звичайно, можна використовувати MVP у системі "Чиста архітектура", але це не єдиний правильний підхід. Будь-яка конструкція інтерфейсу, де "внутрішні шари" не знають нічого особливого про інтерфейс користувача і де користувальницький інтерфейс дотримується також інших правил "Чиста архітектура", описаних у статті Боба Мартіна, буде добре.


якщо я дотримуюся схеми MVP, чи гарантується я, що я не порушив правил чистої архітектури?
Мехрдад Шокри

1
@Mehrdad: ні. MVP просто допомагає вам отримати "Правило залежності" правильно, і тільки між шарами View & Presenter, а також між Presenter і Model, не менше, не більше. Вам залишається дбати про всі інші речі, описані у статті Боба Мартіна. Наприклад, MVP сам по собі нікого не заважає передавати складні структури даних між шарами (на відміну від простих структур даних, згаданих у цій статті, які слід використовувати для перетину меж).
Док Браун
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.