MVC

Vikipēdijas raksts
Pārlēkt uz: navigācija, meklēt

Projektēšanas šablons „Modelis-Skats-Kontrolleris” (Model-View-Controller), tālāk tekstā — MVC, ir fundamentāls projektēšanas šablons, kas tiek lietots interaktīvās sistēmās (sistēmā kur mijiedarbība starp lietotāju un sistēmu notiek dialogu režīmā, paredz lietotāju saskarni un iekļauj elementus ar kuriem lietotājs manipulē ar sistēmu un elementus kas attēlo šo manipulāciju rezultātus). Loģiski sadalot lietojumprogrammu trīs patstāvīgās komponentēs, kur katrai komponentei ir savi uzdevumi un mērķi, padara lietojumprogrammu vieglāk saprotamu un pārvaldāmu, ka arī padara iespējamu atkārtoti izmantot lietojumprogrammas komponentes.

Projektēšanas šablons MVC sadala sistēmu trijās daļas - datu ievads, datu apstrāde, datu attēlojums kur katra daļa risina atsevišķu uzdevumu. Loģiskā komponente Modelis iekapsulē datu kodolu un pamata funkcionalitāti, kas nav atkarīga no attēlojuma.
Loģiskā komponente Skats ir atbildīga par Modeļa datu attēlošanu, atbilstoši lietotāja definētai datu prezentācijas formai. (Prezentāciju formu nosaka, piemēram, lietotāja saskarnes valoda vai lietotāja piejās līmenis). Loģiskā komponente Kontrolleris saņem un nolemj kā apstrādāt ziņojumus, kurus saņem no lietotāja, un translē signālus komandās, kas tiek sūtītas Modelim vai Skatam.
MVC mērķis ir padarīt Modeli neatkarīgu no Skata un Kontrollera, kuri kopā veido lietotāja saskarni lietojumprogrammā. Tāda neatkarība ļauj izstrādāt un testēt modeli neatkarīgi no tā attēlojuma. Tā kā Modelis ir neatkarīgs, tās nevar tieši griezties pie Skata vai Kontrollera.
Modelis var pasīvi piegādāt servisus un datus citām lietojumprogrammas komponentēm, vai arī paziņot citām komponentēm par sava stāvokļa izmaiņām.

MVC struktūra[izmainīt šo sadaļu | labot pirmkodu]

Komponente Modelis realizē programmas funkcionalitāti (piem. izpilda aritmētiskas operācijas, griežas pie datu avota lai nolasītu vai saglabātu neaktīvus objektus). MVC šablons paredz to, kā komponente, kas atbild par datu attēlošanu programmas lietotājam— Skats attēlotu notikušas izmaiņas Modeļa stāvokli. Lai to realizētu MVC paredz notifikācijas mehānismu. Modelis var piereģistrēt vienu vai vairākus Skatus vai Kontrollerus kā savus novērotājus un paziņot tiem par notikušam izmaiņām. Attēlā klāšu diagrammā tiek attēlota klasiska MVC klašu diagramma. Modelis satur Novērotāju kolekcija. Gan Skats, gan Kontrolleris ir abstrakti novērotāji.

MVC dalībnieki[izmainīt šo sadaļu | labot pirmkodu]

Modelis[izmainīt šo sadaļu | labot pirmkodu]

Minētā komponente satur klases un saskarnes, kas atbalsta datu modeli. Modeļa stāvoklis iekapsulēts atribūtos un metožu implementācijas. Modeļa kods nesatur nekādas informācijas, kas attiecas uz saskarni, tomēr izsuta Skatam notifikācijas par jebkuram izmainām Modeļa stāvoklī. Pastāv divas modeļa variācijas Pasīvais un Aktīvais Modelis

Pasīvais Modelis[izmainīt šo sadaļu | labot pirmkodu]

Pasīvajā Modelī objekti izmantoti Modelī pilnība nezina, ka tiek izmantoti MVC triādē. Kontrolleris nosuta notifikāciju Skatam tad, kad Kontrolleris palaiž tādu operāciju Modelī, kura prasīs Skata atjaunošanu. Šāda pieeja ir raksturīga timekļa lietojumprogrammām. MVC šablons ar pasīvo modeli neparedz notifikācijas mehānismu no Modeļa puses. Skats un Kontrolleris nereģistrē sevi kā Novērotāji. Tādejādi par notifikāciju atbild Kontrolleris, kas paziņo Skatam, ka izsauktas funkcijas izmainīja Modeļa stāvokli. MVC šablons ar pasīvo Modeli tiek izmantots tīmekļa lietojumprogrammās. Attēlā secības diagrammā ir redzams kā notifikāciju Skatam par izmaiņām Modeli nosūta Kontrolleris. Modelis ir pasīvi atgriež vērtības, kas pieprasa Skats vai Kontrolleris.


Aktīvais Modelis[izmainīt šo sadaļu | labot pirmkodu]

Aktīvā Modeļa klases nosaka izmaiņu notifikācijas mehānismu, kas atļauj paziņot neatkarīgiem komponentiem Skatam un Kontrollerim par izmaiņām Modelī. Parasti tam tiek izmantots projektēšanas šablons Novērotājs (Obsever). Notifikācijas mehānisms nekāda mērā nepadara Modeli atkarīgu. MVC šablons ar aktīvo Modeli tiek izmantots galdā lietojumprogrammās. Attēlā secības diagrammā ir redzams kā notifikāciju Skatam par izmaiņām Modeli nosūta Modelis.


Skats[izmainīt šo sadaļu | labot pirmkodu]

Komponente Skats satur klases un saskarnes, kas nodrošina modeļa vizuālo attēlojumu. Skatu var nosaukt par Modeļa stāvokļa reprezentāciju, kas tikai lasa datus no Modeļa izmantojot Modeļa klases metodes. Skatam ir brīva pieeja pie Modeļa, bet Skats nevar mainīt Modeļa stāvokli

Kontrolleris[izmainīt šo sadaļu | labot pirmkodu]

Kontrolleris saņem no lietotāja signālus un translē tas pieprasījumos pie Modeļa vai Skata, kuri liek Modeli vai Skatu mainīties un atbildēt par veiktam izmaiņām Kontrollerim. Aktīvā Modeļa gadījumā Modeļa stāvokļa izmaiņas izmaiņa arī Skatu — par to ir atbildīgs Modelis. Pasīvā Modeļa gadījumā par Skata notifikāciju atbild Kontrolleris

Attiecības[izmainīt šo sadaļu | labot pirmkodu]

Modelis-Skats[izmainīt šo sadaļu | labot pirmkodu]

MVC šablonā Skats atdalīts no Modeļa nodibinot mijiedarbības protokolu Izdevējs-Parakstītājs (Publisher-Subscriber), vairāk zināms vārdā Noverotājs(Observer). Attiecības starp Modeli un Skatu tiek definētas kā Subjekts(Subject) un attiecīgi Novērotājs(Observer) dalībnieku attiecības projektēšanas šablonā Novērotājs.

Skats-Kontrolleris[izmainīt šo sadaļu | labot pirmkodu]

SmallTalk valodā Skats un Kontrolleris ir ļoti saistīti. Katrs Skata eksemplārs ir saistīts ar unikālo Kontrollera eksemplāru. Skats ir atbildīgs par jauno Skatu un Kontrolleru izveidošanu. Dažās uz MVC bāzētas grafiskas lietotāka saskarnes realizācijas Skats un Kontrolleris ir vienkārši apvienoti vienā objektā. Attiecības starp Skatu un Kontrolleri varētu būt definētas kā Stratēģija (Strategy) projektēšanas šablons

Kontrolleris-Modelis[izmainīt šo sadaļu | labot pirmkodu]

Attiecības starp Modeli un Kontrolleri tiek definētas izmantojot vēl vienu projektēšanas šablonu Komanda (Command).


Skatīt arī[izmainīt šo sadaļu | labot pirmkodu]