Programavimas

MVC, MVP ir MVVM dizaino modelių tyrimas

Vartotojo sąsajoje dažnai yra daug sugadinto kodo, visų pirma dėl sudėtingos logikos, kurią reikia tvarkyti. Pateikimo modeliai yra kuriami visų pirma atsižvelgiant į vieną tikslą, sumažinant sudėtingą kodą pateikimo sluoksnyje, o vartotojo sąsajoje esantį kodą paverčiant švariu ir valdomu. Šiame pranešime pateiksiu diskusiją apie MVC, MVP ir MVVM dizaino modelius ir pabrėžsiu, kada vienas turėtų būti pasirinktas dizainas, palyginti su kitu.

Modelio rodinio valdiklis

„Model View Controller“ (paprastai vadinama MVC) sistema padeda kurti programas, kurias lengviau išbandyti ir prižiūrėti. Jį sudaro trys pagrindiniai komponentai, būtent:

  1. Modelis - tai programos duomenis vaizduojantis sluoksnis
  2. Rodinys - tai reiškia pristatymą arba vartotojo sąsajos sluoksnį
  3. Valdiklis - šiame sluoksnyje paprastai yra jūsų programos verslo logika

Pagrindinis MVC dizaino modelio tikslas yra atskirti rūpesčius, kad būtų lengviau išbandyti. „Model View Controller“ dizaino modelis leidžia išskirti problemas ir palengvina programos kodo testavimą ir priežiūrą. Pagal tipišką MVC dizainą užklausa pirmiausia pasiekiama valdiklyje, kuris susieja modelį su atitinkamu vaizdu. Pagal MVC dizaino modelį rodinys ir valdiklis naudoja strategijos dizainą, o vaizdas ir modelis yra sinchronizuojami naudojant stebėtojo dizainą. Taigi galime pasakyti, kad MVC yra sudėtinis modelis. Valdiklis ir vaizdas yra laisvai susieti ir vienu valdikliu gali naudotis keli rodiniai. Rodinys pritaria modelio pokyčiams.

„Model View Presenter“

MVP („Model View Presenter“) modelį taip pat sudaro trys komponentai - modelis, vaizdas ir vedėjas. Pagal MVP dizaino modelį valdiklį (MVC) pakeičia pateikėjas. Skirtingai nuo MVC dizaino modelio, pranešėjas nurodo vaizdą, dėl kurio lengviau tyčiotis iš rodinio, o programų, kurios naudoja MVP dizaino modelį virš MVC dizaino modelio, testavimas yra vienetinis. Pagal MVP dizaino modelį vedėjas manipuliuoja modeliu ir atnaujina rodinį. Yra du šio dizaino variantai. Tai apima šiuos dalykus.

  1. Pasyvus vaizdas - pagal šią strategiją rodinys nėra žinomas apie modelį, o vedėjas atnaujina vaizdą, kad atspindėtų modelio pokyčius.
  2. Prižiūrintis valdiklis - pagal šią strategiją rodinys sąveikauja su modeliu, kad duomenys būtų susieti su duomenų valdikliais be vedėjo įsikišimo. Vedėjas yra atsakingas už modelio atnaujinimą. Rodiniu jis manipuliuoja tik prireikus - jei jums reikia sudėtingos vartotojo sąsajos logikos.

Nors abu šie variantai skatina pateikimo logikos patikrinamumą, pirmenybė teikiama pasyvaus vaizdo variantui, palyginti su kitu variantu (prižiūrinčiu valdikliu), kiek tai susiję su testavimu, visų pirma todėl, kad pateikėjo viduje turite visą rodinio atnaujintą logiką.

MVP dizaino modeliui teikiama pirmenybė, palyginti su MVC, kai jūsų programai reikia palaikyti kelias vartotojo sąsajos technologijas. Tai taip pat pageidautina, jei turite sudėtingą vartotojo sąsają ir daug naudotojo sąveikos. Jei norite, kad jūsų programos vartotojo sąsajoje būtų atliekamas automatinis vieneto testavimas, MVP dizaino modelis yra tinkamas ir teikiamas pirmenybė, palyginti su tradiciniu MVC dizainu.

Modelis - „View“ - „ViewModel“ (MVVM)

„Model - View - ViewModel“ (MVVM) yra Martino Fowlerio „Presentation Model“ dizaino modelio variacija. MVVM yra populiaraus MVC dizaino patobulinimas, o „ViewVodel“, esantis MVVM, naudojamas palengvinti pristatymo atskyrimą. MVVM logika saugoma pranešime ir vaizdas yra visiškai izoliuotas nuo modelio. Nors vedėjas nežino rodinio, rodinys žino vedėją - MVVM pateikėjas naudojamas abstrakčiam vartotojo sąsajos vaizdui vaizduoti. Pasyvus vaizdas reiškia, kad vaizdas neturi jokių žinių apie modelį. MVVM dizaino šablone rodinys yra aktyvus, jame yra elgesio, įvykių ir duomenų įpareigojimo informacijos. Atkreipkite dėmesį, kad MVVM rodinys nėra atsakingas už būsenos informacijos valdymą - rodinys gana sinchronizuojamas su peržiūros modeliu. MVVM vaizdo modulis yra atsakingas už pateikimo atskyrimą ir pateikia metodus bei komandas, skirtas valdyti rodinio būseną ir manipuliuoti modeliu.

Kaip bendrauja vaizdas ir vaizdo modulis MVVM? Na, MVVM rodinys ir vaizdo modulis bendrauja naudojant metodus, savybes ir įvykius. Dviejų krypčių duomenų susiejimas arba dviejų krypčių duomenų susiejimas tarp rodinio ir vaizdo modelio užtikrina, kad modeliai ir ypatybės rodinio modelyje yra sinchronizuojami su vaizdu. MVVM dizaino modelis puikiai tinka toms programoms, kurioms reikia palaikyti dvikryptį duomenų susiejimą.