В чем разница между MVP и чистой архитектурой


13

Вопрос самоочевиден, просто чтобы добавить мои мысли:
насколько я читал, уровень представления в Чистой арке несет такую ​​же ответственность, как и в MV в MVP.

Как один решает выбрать один шаблон вместо другого?


MVP является частью чистой архитектуры, эту статью следует прочитать androidwave.com/android-mvp-architecture-for-beginners-demo-app
Сурья Пракаш Кушавах

Ответы:


15

То, что Боб Мартин назвал « Чистая архитектура », - это скорее «мета-архитектура», руководство высокого уровня для создания многоуровневых архитектур. Это не говорит ничего подобного

«Должны быть слой модели, слой представления и уровень представления, и они должны быть реализованы с использованием MVP »,

он содержит только более общие правила для слоев, такие как «зависимости должны идти от внешних кругов к внутренним кругам, а не наоборот» . А поскольку в MVP View (= UI) может знать Presenter, но Presenter отделен от View интерфейсом, MVP является лишь одним из многих возможных решений, удовлетворяющих этому правилу.

Конечно, можно использовать MVP внутри системы «Чистая архитектура», но это не единственный правильный подход. Любой дизайн пользовательского интерфейса, в котором «внутренние слои» не знают ничего особенного о пользовательском интерфейсе, и в котором пользовательский интерфейс следует также другим правилам «чистой архитектуры», описанным в статье Боба Мартина, подойдет.


если я следую шаблону MVP, гарантируется ли, что я не нарушил правила чистой архитектуры?
Мехрдад Шокри

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