Ohjelmointi

MVC-, MVP- ja MVVM-mallien tutkiminen

Käyttöliittymä sisältää usein paljon sekaisin koodia ensisijaisesti sen monimutkaisen logiikan vuoksi, jota sen on käsiteltävä. Esityskuviot suunnitellaan ensisijaisesti yksi tavoite huomioon ottaen, vähentämällä esityskerroksen kompleksista koodia ja tekemällä käyttöliittymän koodi puhtaaksi ja hallittavaksi. Tässä viestissä esitän keskustelun MVC: n, MVP: n ja MVVM: n suunnittelumalleista ja korostan, milloin yhden pitäisi olla valinta toisena.

Mallinäkymän ohjain

Model View Controller (yleisesti tunnettu MVC) -kehys auttaa sinua rakentamaan sovelluksia, joita on helpompi testata ja ylläpitää. Se koostuu kolmesta pääkomponentista, nimittäin:

  1. Malli - tämä on taso, joka edustaa sovelluksen tietoja
  2. Näkymä - tämä edustaa esitystä tai käyttöliittymäkerrosta
  3. Ohjain - tämä kerros sisältää tyypillisesti sovelluksesi liiketoimintalogiikan

MVC-suunnittelumallin ensisijainen tavoite on huolenaiheiden erottaminen testattavuuden helpottamiseksi. Mallinäkymäohjaimen suunnittelumallin avulla voit eristää huolenaiheet ja helpottaa sovelluksesi koodin testaamista ja ylläpitämistä. Tyypillisessä MVC-mallissa pyyntö saapuu ensin ohjaimeen, joka sitoo mallin vastaavalla näkymällä. MVC-suunnittelumallissa näkymä ja ohjain hyödyntävät strategiasuunnittelua, ja näkymä ja malli synkronoidaan tarkkailijasuunnittelun avulla. Siksi voimme sanoa, että MVC on yhdistelmämalli. Ohjain ja näkymä on kytketty löyhästi ja yhtä ohjainta voidaan käyttää useissa näkymissä. Näkymä hyväksyy mallin muutokset.

Mallinäkymän esittäjä

MVP (Model View Presenter) -mallikuvio koostuu myös kolmesta osasta - malli, näkymä ja esittäjä. MVP-mallikuviossa ohjain (MVC: ssä) korvataan esittäjällä. Toisin kuin MVC-suunnittelumalli, esittäjä viittaa takaisin näkymään, jonka vuoksi näkymän pilkkaaminen on helpompaa, ja yksiköiden testaus sovelluksille, jotka hyödyntävät MVP-suunnittelukuviota MVC-mallikuvion yli, ovat paljon helpompia. MVP-mallikuvassa esittäjä manipuloi mallia ja päivittää myös näkymän. Tätä mallia on kaksi muunnelmaa. Näitä ovat seuraavat.

  1. Passiivinen näkymä - tässä strategiassa näkymä ei ole tietoinen mallista ja esittäjä päivittää näkymän vastaamaan mallin muutoksia.
  2. Valvova ohjain - tässä strategiassa näkymä on vuorovaikutuksessa mallin kanssa sitomaan tietoja datan ohjaimiin ilman esittäjän puuttumista. Esittäjä on vastuussa mallin päivittämisestä. Se manipuloi näkymää vain tarvittaessa - jos tarvitset monimutkaisen käyttöliittymälogiikan suoritettavaksi.

Vaikka molemmat näistä muunnelmista edistävät esityslogiikan testattavuutta, passiivisen näkymän muunnelma on suositeltavampi kuin toinen muunnelma (valvova ohjain) testattavuuden kannalta ensisijaisesti siksi, että sinulla on koko näkymä päivitetty logiikka esittäjän sisällä.

MVP-suunnittelumalli on suositeltava MVC: lle, kun sovelluksesi on tuettava useita käyttöliittymätekniikoita. On myös suositeltavaa, jos sinulla on monimutkainen käyttöliittymä ja paljon käyttäjän vuorovaikutusta. Jos haluat automatisoidun yksikötestin sovelluksesi käyttöliittymässä, MVP-suunnittelumalli soveltuu hyvin ja suositaan perinteiseen MVC-suunnitteluun nähden.

Malli - Näytä - ViewModel (MVVM)

Model - View - ViewModel (MVVM) on muunnelma Martin Fowlerin Presentation Model -mallikuviosta. MVVM on tarkennus suositulle MVC-suunnittelulle, ja MVVM: n ViewModeliä käytetään esityksen erottamisen helpottamiseen. MVVM: ssä logiikka on tallennettu esittäjään ja näkymä on täysin eristetty mallista. Vaikka esittäjä ei ole tietoinen näkymästä, näkymä on tietoinen esittäjästä - MVVM: n esittäjää käytetään kuvaamaan abstrakti näkymä käyttöliittymästä. Passiivinen näkymä tarkoittaa, että näkymällä ei ole tietoa mallista. MVVM-mallikuvassa näkymä on aktiivinen ja sisältää käyttäytymismalleja, tapahtumia ja datan sitomista koskevia tietoja. Huomaa, että MVVM: n näkymä ei ole vastuussa tilatietojen hallinnasta - näkymä on pikemminkin synkronoitu näkymän kanssa. MVVM: n näkymämalli vastaa esitysten erottelusta ja paljastaa menetelmät ja komennot näkymän tilan hallitsemiseksi ja mallin manipuloimiseksi.

Kuinka MVVM: n näkymä ja näkymämalli kommunikoivat? No, MVVM: n näkymä ja näkymämalli kommunikoivat menetelmien, ominaisuuksien ja tapahtumien avulla. Näkymän ja näkymämallin välinen kaksisuuntainen tietosisältö tai kaksisuuntainen tietosisältö varmistaa, että näkymämallin mallit ja ominaisuudet ovat synkronoituja näkymän kanssa. MVVM-suunnittelumalli soveltuu hyvin sovelluksiin, jotka tarvitsevat tukea kaksisuuntaiseen tietokohtien sitomiseen.