Skirtumas tarp MVVM ir MVP

Programinės įrangos kūrimo tikslas yra sukurti sprendimus, tenkinančius vartotojų ir verslo poreikius ir problemas. Norint tai pasiekti, patinka skirtingos technologijos ir architektūros modeliai „Model-View-ViewModel“ (MVVM) ir „Model-View-Presenter“ (MVP) yra naudojami.

Kaip ir gaminant bet ką, pirmasis žingsnis yra planavimo ir projektavimo etapas. Programinės įrangos projektavimo procesas gali būti specifikacija, pagrįsta pageidaujamų technologijų įrankių rinkiniu, ir ji gali apimti visą veiklą nuo sumanymo - nuo planavimo iki įgyvendinimo - iki atnaujinimo ir modifikavimo..

Jis apima žemo ir aukšto lygio architektūrinį dizainą, pagrįstą pasirinktais architektūros modeliais, ir nubraižo daugkartinio naudojimo sprendimus, naudodamas projektavimo modelius.

Programinės įrangos taikymo struktūra

Programinės įrangos architektūra nusako programos struktūrą, kuri atitinka techninius, eksploatacinius ir vartotojo reikalavimus, ir nurodo, kaip kodas yra organizuojamas ir valdomas.

Svarbu apsispręsti dėl programinės įrangos architektūros, nes tai nėra lengva ir lengvai keičiama programos dalis, kuri jau yra sukurta; todėl prieš pradedant bet kokį programavimą reikia nuspręsti dėl architektūrinio modelio.

Architektūriniai modeliai šiek tiek skiriasi nuo projektavimo modelių, nes jų taikymo sritis yra daug platesnė, nes sprendžiama daugiau techninių problemų, tokių kaip techninės įrangos našumas ir apribojimai bei didelis prieinamumas. Skirtingų architektūros modelių pavyzdžiai yra MVC, MVVM ir MVP.

Kita vertus, projektavimo modeliai yra formalizuota geriausia praktika, palengvinanti daugkartinį objektų kūrimą ir lengviau prižiūrima bei keičiama nei programos architektūra.. 

Architektūros modeliai

Modelio vaizdo valdiklis (MVC) buvo vienas iš pirmųjų architektūros modelių, sukurtų interneto programoms, populiarėjantis nuo 9-ojo dešimtmečio vidurio iki pabaigos, ypač „Java“ bendruomenėje.

Naujesnėse sistemose, tokiose kaip „Django for Python“ ir „Rails“ („Ruby on Rails“), didelis dėmesys skiriamas greitam diegimui, todėl MVC užima rinkos dalį kaip didelę patrauklumą architektūros modeliuose..

Tradiciškai vartotojo sąsajos kūrime buvo daug kodo, kad būtų galima valdyti sudėtingą logiką, todėl architektūros modeliai buvo sukurti siekiant sumažinti kodą vartotojo sąsajos (UI) lygyje, padarant jį labiau „švariu“ ir valdomu..

Taigi, naudojant MVC modelį, yra sudaryta iš interneto programos

  • Modelis (duomenys)
  • Vaizdas (sąsaja duomenims peržiūrėti ir manipuliuoti)
  • Valdiklis (operacijos ir veiksmai, atlikti su duomenimis)

Modelis tvarko duomenis ir verslo logiką, ir yra ne priklausomybės tarp Modelis ir Valdiklis arba Vaizdas.

Vaizdas pateikia duomenis vartotojui palaikomu formatu ir reikiamu išdėstymu, o kada Valdiklis gauna vartotojo užklausas (norint gauti duomenis), ji iškviečia atitinkamus išteklius, reikalingus užklausai užpildyti.

Taikykime šį modelį kurdami internetinę knygų parduotuvę.

Vartotojai gali ieškoti, peržiūrėti, registruoti ir pirkti knygas, taip pat tvarkyti savo profilius ir knygų sąrašus. Kai vartotojas spustelėja SCI-FI kategoriją, visos susijusios knygos turėtų būti rodomos kaip prieinamos.

Valdikliai tvarkykite veiksmus, kurie valdo knygas (sąrašą, pridėkite, peržiūrėkite ir tt). Gali būti keli Valdikliai su vienu pagrindiniu Valdiklis 'nukreipti eismą'.

Šiame pavyzdyje Valdiklis pavadintas controller_books.php ir Modelis (pvz., model_books.php) tvarko su knygomis susijusius duomenis ir logiką.

Galiausiai, skirtingi Peržiūrėjo reikės, pavyzdžiui, pridedant knygas prie internetinio krepšelio arba peržiūrint išsamią knygos informaciją su vaizdais ir apžvalgomis.

valdiklio_knygos.php gauna veiksmą (vartotojo prašymą) iš pagrindinio Valdiklis (pvz. indeksas.php). valdiklio_knygos.php išanalizuoja prašymą ir paskambina modelio knygos.php (duomenys), kad būtų grąžintas SCI-FI knygų sąrašas.

Atsakomybė Modelis yra pateikti tą informaciją naudojant bet kurią logiką, kuri buvo taikoma (naudojant paieškos filtrus). Valdiklis tada paima informaciją ir perduoda ją atitinkamai Vaizdas (paieškos vaizdas, spausdinimo vaizdas, išsamios informacijos vaizdas ir tt), o informacija pateikiama (per Vaizdas) vartotojui, kuris inicijavo užklausą.

Tai yra MVC modelio pagrindai, išryškėję neršto architektūros modelių variantai, tokie kaip „Model-View-Presenter“ (MVP), Model-View-ViewModel (MVVM), Hierarchical-Model-View-Controller (HMVC). ir „Model-View-Adapter“ (MVA) ir kt.

MVP modelis

„Model-View-Presenter“ (MVP)

MVP modelis buvo jau kurį laiką ir yra MVC variantas. Jis buvo sukurtas specialiai bandymų automatizavimui, kurio tikslas buvo padidinti kodo, kurį galima išbandyti automatizuojant, kiekį, o šablonas išsprendžia kai kurias pateikimo sluoksnio problemas, izoliuodamas verslo logiką iš vartotojo sąsajos..

Ekranas yra „View“, jo rodomi duomenys yra „Model“, o „Presenter“ abu juos sujungia.

MVP sudaro šie komponentai su atskira atsakomybe:

  • Modelis (apibrėžiami rodomi duomenys)
  • Vaizdas (rodo duomenis iš modelio ir nukreipia vartotojo užklausas į pateikėją).
  • Pranešėjas (sąveikauja tarp rodinio ir modelio ir juos sujungia)

Vaizdas (internetinis puslapis) rodo ir valdo puslapio valdiklius, persiųsdamas įvykius (vartotojo užklausas) į Pranešėjas kurios buvo inicijuotos Vaizdas.

Pranešėjas reaguoja į šiuos įvykius skaitydamas ir atnaujindamas Modelis pakeisti Vaizdas ir todėl Presenter's atsakomybė yra įpareigoti Modelis ir Vaizdas.

Pažiūrėjęs į MVC ir MVP modeliai, bendrumas yra tas, kad kiekvienam komponentui tenka atskira atsakomybė ir jie skatina atskirti Vaizdas (UI) ir Modelis (duomenys). Reikšmingi šių modelių skirtumai išryškėja diegiant modelius.

MVP gali būti sudėtingas pažangių sprendimų diegimo modelis, tačiau, be abejonės, jis turi didelę naudą, jei įgyvendinamas kaip gerai suplanuotas sprendimas, nors tai nebūtinai yra tinkamas pasirinkimas paprastiems sprendimams.

MVVM modelis

„Model-View-ViewModel“ (MVVM)

MVVM modelis buvo specialiai sukurtas „Windows Presentation Foundation“ (WPF) ir „Microsoft Silverlight“ platformoms, ir jis gali būti naudojamas visose XAML [i] platformos.

WPF yra „Microsoft“ sistema, teikianti vartotojo sąsajas „Windows“ pagrįstose programose ir pirmą kartą išleista .NET Framework 3.0.

MVVM buvo patobulintas nuo MVC ir pagal šį modelį Vaizdas aktyvus elgesys, įvykiai ir duomenų įpareigojimas, ir Vaizdas sinchronizuoja su „ViewModel“ (tai leidžia atskirti pateikimą ir parodo metodus ir komandas, skirtus valdyti ir manipuliuoti Modelis.

MVVM susideda iš trijų pagrindinių komponentų:

  • Modelis (žymi duomenis su patvirtinimu ir verslo logika)
  • Vaizdas (Vaizdas yra atsakingas už struktūros, išdėstymo ir išvaizdos, kurią vartotojas mato ekrane, apibrėžimą. Idealiu atveju vaizdas apibrėžtas grynai naudojant XAML, turint ribotą kodą, kuriame nėra verslo logic.two dvipusio duomenų- privalomasis tarp Vaizdas ir „ViewModel“ ekranams, sinchronizuojantiems modelį ir „ViewModel“ su vaizdu)
  • „ViewModel“ (atskiria vaizdą nuo modelio ir pateikia metodus ir komandas manipuliuoti duomenimis (pavyzdys).

Vaizdas gauna duomenis iš „ViewModel“ (per duomenų susiejimą ir metodus) ir vykdymo metu Vaizdas pasikeis reaguojant į įvykius „ViewModel“.

„ViewModel“ tarpininkauja tarp Vaizdas ir Modelis ir tvarko Vaizdas logika. Tai sąveikauja su Modelis - duomenų paėmimas iš Modelis ir pristatyti ją Vaizdas Rodyti.

Visi šie komponentai yra atsieti vienas nuo kito, kad būtų galima lanksčiau dirbti su jais savarankiškai, atskirti vienetų bandymus ir juos pakeisti, nepažeidžiant jokio kito komponento..

Ši struktūra leidžia: Modelis ir kiti komponentai, kad galėtų vystytis savarankiškai, leisdami kūrėjams kartu dirbti su skirtingais sprendimo aspektais. Pavyzdžiui, kur dizaineriai dirba Vaizdas, jie tiesiog sukuria duomenų pavyzdžius, jiems nereikia prieigos prie kitų komponentų. Tai palengvina vartotojo sąsajos, kaip Vaizdas yra įdiegtas XAML.

Kaip minėta anksčiau su MVP, paprastiems sprendimams nereikia architektūros ir dizaino modelių, pvz., „Sveikas pasaulis!“ yra per daug paprastas, kad galėtų sekti bet kokį modelį; tačiau įdiegus daugiau funkcijų, funkcijų ir komponentų, programos sudėtingumas didėja ir didėja kodo, kurį reikia valdyti, kiekis..

Apibendrinant

Nuo pat vartotojo sąsajos kūrimo pradžios tampa vis populiaresni projektavimo modeliai, kad kūrimo procesas būtų lengvesnis, programos būtų labiau keičiamos ir palengvintų testavimą..

Iliustruotas skirtumas tarp MVP ir MVVM modelių:

  • Abejuose MVP ir MVVM, Vaizdas yra programos įėjimo taškas
  • Į MVP, yra vienas su kitu žemėlapių sudarymas tarp Vaizdas ir Pranešėjas, kur MVVM, santykiai yra vieni su kitais Vaizdas ir „ViewModel“.
  • MVP daugiausia naudojamas Windows formoms ir Windows Phone programoms ir MVVM skirtas „Silverlight“, „WPF“, „Knockout / AngularJS“ ir kt.