Atverti pagrindinį meniu


Modelis-Vaizdas-Kontroleris architektūrinis šablonas


KontekstasKeisti

Programoje galima logiškai išskirti tokias atskiras dalis, kaip dalykinės srities logika, prezentacija ir naudotojo galimi su sistema veiksmai. Žmonės ar priemonės puikiai tinkantys dirti su viena sritimi, nelabai yra tinkami dirbti kitoje srityje. Dažnai vieni žmonės kuria puslapių dizainą ir HTML kodą, tačiau kiti – programos dalį, atsakingą už verslo srities logiką. Taip pat ir įrankiai dažniausiai yra specializuoti.

ProblemaKeisti

Reikia struktūrizuoti programos kodą taip, kad naudotojo sąsajos kodas, užklausų mechanizmo kodas bei dalykinės srities logikos kodas būtų lengvai keičiamas ir testuojamas atskirai bei būtų galima paskirti atskirus darbus skirtingiems žmonėms. Pvz. kai Java kodas, atsakingas už verslo transakcijas persipynęs su kodu generuojančiu HTML, prireikus pakeisti HTML kodą, dažnai tai pakankamai sunkus darbas.

SprendimasKeisti

Naudodami MVK šabloną mes atskiriame kodą atsakingą už sistemos modelį, vaizdą ir kontrolę.

ModelisKeisti

Modelis yra duomenų, taisyklių, metodų prieiti prie duomenų ir juos keisti rinkinys. Modelis saugo aplikacijos būseną. Atsako į užklausas apie būseną. Pateikia metodus būsenai keisti ir valdyti aplikaciją. Trumpiau būtų galima sakyti, kad modelis yra viskas, kas susiję su dalykinės srities ar verslo logika. Modelis yra nepriklausomas nuo kontrolerio ir vaizdo komponentų.

VaizdasKeisti

Atsako už modelio pavaizdavimą naudotojui. Naudojasi modeliu. Vaizdo komponentas dažniausiai pateikia rezultatą HTML kodo pavidalu. Remiasi modeliu.

KontrolerisKeisti

Naudotojo komandas ar užklausas perduoda modeliui, bei parenka reikalingą vaizdą. Apibrėžia aplikacijos veiksmus(veiksmus, kuriuos gali atlikti naudotojas), suriša naudotojo veiksmus su atitinkamais modelio veiksmais. Ši dalis yra atsakinga už visą darbą su interneto protokolu ir gautų užklausų apdorojimą. Priklausomas nuo modelio ir vaizdo komponentų.

RezultataiKeisti

  • Tas pats modelio komponentas gali būti panaudojamas keliose vietose.
  • Lengviau testuoti atskiras dalis.
  • Lengviau keisti atskiras dalis.
  • Kontrolerio ir vaizdo komponentams lengviau pritaikomos kodo generavimo ir konfigūracijos valdymo priemonės.