MVC, MVP, MVVM: millist valida?

MVC, MVP, MVVM: millist valida?

Kaasaegsed rakendused vajavad nii palju erinevaid funktsioone, et nende arendusprotsess on muutunud mahukaks ja keerukamaks. Abistamiseks võite kasutada arhitektuurse disaini mustrit. Need toetavad hõlpsasti testitavate ja hooldatavate rakenduste loomist.





Kolm kõige populaarsemat disainimustrit on MVC, MVP ja MVVM. MVC tähistab mudelit, vaadet ja kontrollerit, samas kui MVP tähistab mudelit, vaadet ja esitlejat ning MVVM mudelit, vaadet ja vaatemudelit.





Arhitektuuri- ja disainimustrid

Arhitektuurne muster

Arhitektuurne muster selgitab ja määratleb mõned tarkvaraarhitektuuri olulised komponendid. Kuigi arhitektuurne muster annab edasi süsteemi kujutist, see ei ole arhitektuur . Tegelikult on see üldine ja korduvkasutatav lahendus tarkvaraarhitektuuris teatud kontekstis sageli esinevale probleemile.





Kujundusmuster

Kujundusmuster on vormistatud parim tava, mida saate kasutada rakenduse või süsteemi kavandamisel levinud probleemide lahendamiseks.

Erinevus arhitektuuri- ja disainimustri vahel

Alustame levinud terminiga – muster. Tarkvaras on muster korduv omadus, mis võimaldab jagada tohutu ja keeruka struktuuri väiksemateks ja lihtsamateks komponentideks. Saate seda mustrit kasutada probleemide klassi üldise lahenduse loomiseks.



Igal tarkvaraarenduse tasemel kasutate erinevaid tööriistu. Väiksemal tasemel on need tööriistad disainimustrid. Arhitektuurimustrid eksisteerivad suurematel tasanditel ja programmeerimisparadigmad rakendamise tasemel.

Miks me vajame arhitektuurilise disaini mustreid?

Tarkvaraarenduse käigus saate levinud probleemide lahendamiseks kasutada arhitektuurse disaini mustreid. Hea arhitektuur võib aidata teil ka:





  • Jagage keerulised ülesanded lihtsamateks ülesanneteks.
  • Vähendage vigu.
  • Looge testitav ja hooldatav kood.

Kuid ilma arhitektuurse mustrita võib teil tekkida raskusi rakenduse äriloogika säilitamisega.

Model, View, ViewModel, Controller ja Presenter

Enne iga mustri vaatamist on siin need terminid, millest need koosnevad:





  • Mudel salvestab andmeid ja suhtleb otse andmebaasiga. Mudel on osa, mis esindab teie andmeid ja rakenduse loogikat. See määratleb ärireeglid, mis haldavad andmete töötlemist, muutmist või töötlemist.
  • Vaade kuvab mudeli andmed ja vastutab andmete esitamise eest kasutajaliideses.
  • ViewModel on eksklusiivne MVVM-mustri jaoks. See on vaatekihi abstraktsioon ja toimib ka mudeliandmete ümbrisena.
  • Kontroller on komponent, mis ühendab vaate ja mudeli.
  • Saatejuht on komponent, mis eksisteerib ainult MVP mudelis. Presenter saab sisendi vaate komponendist ja töötleb andmeid mudeli abil.

MVC, MVP ja MVVM mustrid

Mudeli-vaate-kontrolleri muster

The MVC arhitektuurimuster oli esimene ja see on tänapäeval veebirakenduste valdkonnas populaarne. Seda tutvustati 1970. aastatel. See muster võimaldab teil luua rakenduse murede eraldamise (SoC) ümber. See hõlbustab teie rakenduse testimiseks, hooldamiseks ja arendamiseks vajalikku pingutust.

MVC mustri puhul pole mudelil vaatest ega kontrollerist arusaamist. Mudeli vaatleja saab hoiatuse alati, kui vaates ja kontrolleris toimub muudatus. Kontroller aitab marsruutimisprotsessil mudelit vastava vaatega ühendada.

Mõned MVC mustri eelised on järgmised:

  • Murede eraldamine (kesksemalt).
  • Muudab koodi testimise ja haldamise lihtsamaks.
  • Soodustab rakenduse kihtide lahtisidumist.
  • Parem koodikorraldus ja korduvkasutatavus.

MVC töötab järgmiselt.

  Pilt diagrammist, mis illustreerib MVC toimimist

Tänu SoC-le saab MVC koodi suurust vähendada ja teha hea koodi, mis on puhas ja hallatav.

Mudeli-vaate-esitleja muster

MVP muster jagab MVC-ga kahte komponenti: mudel ja vaade. See asendab kontrolleri saatejuhiga. Esitlejat – nagu nimigi ütleb – kasutatakse millegi esitamiseks. See võimaldab teil vaadet hõlpsamini mõnitada.

MVP-s on saatejuhil 'keskmehe' funktsionaalsus, sest kogu esitlusloogika on sellele surutud. MVP vaade ja saatejuht on samuti üksteisest sõltumatud ja suhtlevad liidese kaudu.

kuidas muuta Photoshopis dpi

Siin on näide, kuidas MVP muster töötab:

  Pilt diagrammist, mis illustreerib MVP toimimist

Saatejuht saab kasutajalt sisendi vaate kaudu. Seejärel töötleb see mudeli abil kasutaja toiminguid, edastades tulemused tagasi vaatesse. Saatejuht suhtleb vaatega liideste kaudu.

Mudel-vaade-vaadeModeli muster

MVVM on MVC kaasaegne areng. MVVM-i põhieesmärk on selgelt eraldada domeeniloogika ja esitluskiht. MVVM toetab kahesuunalist andmete sidumist vaate ja vaatemudeli vahel.

MVVM-muster võimaldab teil koodi vaate ja mudeli eraldada. See tähendab, et mudeli muutumisel pole vaadet vaja ja vastupidi. Vaatemudelit kasutades saate teha ühikutesti ja testida oma loogilist käitumist ilma oma vaadet kaasamata.

Siin on näide MVVM-i toimimisest:

  Pilt diagrammist, mis illustreerib MVVM-i toimimist

Millal kasutada MVC-d, MVP-d ja MVVM-i

Nüüd, kui olete iga mustri kohta õppinud, uurige, millal neid kasutada.

Millal MVC-d kasutada

MVC on lihtsalt murede eraldamise rakendus. Kui teie rakendusel on vaja eraldada andmed (mudel), andmete purustamine (kontroller) ja andmete esitus (vaade), töötab MVC hästi. MVC toimib hästi ka rakenduses, kus andmeallikas ja/või andmete esitus võib igal ajal muutuda.

Millal kasutada MVP-d

Saate kasutada MVP-d, kui teie rakendusel on kahesuunaline voog. Kui kasutaja interaktsioonid peavad mudelilt midagi taotlema ja selle päringu tulemus muudab kasutajaliidest kohe, kaaluge MVP-d.

Millal MVVM-i kasutada

Soovite kasutada MVVM-i järgmistel juhtudel:

  • Projekti tuleb jagada disaineriga ning projekteerimis- ja arendustööd võivad toimuda iseseisvalt.
  • Nõuate oma lahenduste jaoks ühikutestimist.
  • Teil peavad olema korduvkasutatavad komponendid nii teie organisatsiooni projektide sees kui ka nende vahel.
  • Soovite vaadete muutmiseks suuremat paindlikkust, ilma et peaksite koodibaasi muud loogikat ümber kujundama.

Millise mustri peaksite valima?

Peamine põhjus disainimustri kasutamiseks on keerukuse vähendamine. Seda saate teha, vähendades üldist keerukust või asendades harjumatu keerukuse tuttavaga. Kui kujundusmuster ei suuda mõlemal viisil keerukust vähendada, ärge kasutage ühtegi neist; see ei anna mingit lisaväärtust.

Kui olete tõesti kindel, et peaksite kasutama kujundusmustrit, proovige koostada kontrollnimekiri. Lähtuge siin nähtud olukordadest ja valige oma projekti jaoks kõige sobivam.