Проучване на дизайнерските модели на MVC, MVP и MVVM

Потребителският интерфейс често съдържа много разхвърлян код, главно поради сложната логика, с която трябва да се справи. Презентационните модели се проектират предимно с една цел, като се намалява сложният код в презентационния слой и се прави кодът в потребителския интерфейс чист и управляем. В тази публикация ще представя дискусия за моделите на проектиране на MVC, MVP и MVVM и ще подчертая кога единият трябва да бъде избраният дизайн пред другия.

Контролер за изглед на модел

Контролерът на Model View Controller (известен като MVC) ви помага да създавате приложения, които са по-лесни за тестване и поддръжка. Състои се от три основни компонента, а именно:

  1. Модел - това е слоят, който представлява данните на приложението
  2. Изглед - това представлява презентацията или слоя на потребителския интерфейс
  3. Контролер - този слой обикновено съдържа бизнес логиката на вашето приложение

Основната цел на модела на проектиране на MVC е разделяне на проблемите, за да се улесни проверяемостта. Моделът за дизайн на контролера на изгледа ви позволява да изолирате проблемите и прави кода на приложението ви по-лесен за тестване и поддръжка. В типичен MVC дизайн заявката първо пристига в контролера, който свързва модела със съответния изглед. В шаблона за проектиране на MVC изгледът и контролерът използват дизайн на стратегия, а изгледът и моделът се синхронизират с помощта на дизайна на наблюдателя. Следователно можем да кажем, че MVC е сложен модел. Контролерът и изгледът са свободно свързани и един контролер може да се използва от множество изгледи. Изгледът се абонира за промените в модела.

Презентатор на изглед на модел

Моделът за проектиране на MVP (Model View Presenter) също се състои от три компонента - модел, изглед и презентатор. В модела за проектиране на MVP, контролерът (в MVC) се заменя с презентатора. За разлика от шаблона за проектиране на MVC, презентаторът се връща към изгледа, поради което подиграването на изгледа е по-лесно, а модулното тестване на приложения, които използват шаблона за проектиране на MVP върху шаблона за проектиране на MVC, е много по-лесно. В шаблона за проектиране на MVP, водещият манипулира модела и също така актуализира изгледа. Има два варианта на този дизайн. Те включват следното.

  1. Пасивен изглед - в тази стратегия изгледът не е запознат с модела и презентаторът актуализира изгледа, за да отрази промените в модела.
  2. Supervising Controller - в тази стратегия изгледът взаимодейства директно с модела, за да обвърже данните с контролите за данни без намесата на представящия. Водещият е отговорен за актуализирането на модела. Той манипулира изгледа само ако е необходимо - ако се нуждаете от сложна логика на потребителския интерфейс, която да бъде изпълнена.

Докато и двата варианта насърчават проверяемостта на презентационната логика, вариантът на пасивния изглед е за предпочитане пред другия вариант (контролиращ контролер), що се отнася до проверимостта, главно защото имате цялата актуализирана логика на изгледа в презентатора.

Шаблонът за проектиране на MVP е предпочитан пред MVC, когато приложението ви трябва да осигури поддръжка за множество технологии на потребителски интерфейс. Също така е за предпочитане, ако имате сложен потребителски интерфейс с много потребителско взаимодействие. Ако искате да имате автоматизиран модулен тест на потребителския интерфейс на вашето приложение, шаблонът за проектиране на MVP е много подходящ и предпочитан пред традиционния MVC дизайн.

Модел - Изглед - Изглед на Модел (MVVM)

Моделът - Изглед - ViewModel (MVVM) е вариация на модела на дизайнерския модел на Мартин Фаулър. MVVM е усъвършенстване на популярния MVC дизайн, а ViewModel в MVVM се използва за улесняване на разделянето на презентациите. В MVVM логиката се съхранява в презентатора и изгледът е напълно изолиран от модела. Докато водещият не е наясно с изгледа, изгледът е запознат с водещия - презентаторът в MVVM се използва за представяне на абстрактен изглед на потребителския интерфейс. Пасивният изглед предполага, че изгледът няма никакви познания за модела. В шаблона за проектиране на MVVM изгледът е активен и съдържа информация за поведението, събитията и данните. Имайте предвид, че изгледът в MVVM не е отговорен за управлението на информацията за състоянието - изгледът е по-скоро синхронизиран с viewmodel.Моделът на изглед в MVVM е отговорен за разделянето на презентациите и излага методи и команди за управление на състоянието на изглед и манипулиране на модела.

Как общуват изгледът и viewmodel в MVVM? Е, изгледът и viewmodel в MVVM комуникират, използвайки методи, свойства и събития. Двупосочното обвързване на данни или двупосочното обвързване на данни между изгледа и модела на изгледа гарантира, че моделите и свойствата в модела на изгледа са синхронизирани с изгледа. Шаблонът за проектиране на MVVM е подходящ за приложения, които се нуждаят от поддръжка за двупосочно свързване на данни.