MVC
Vikipēdijas raksts
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 trijos patstāvīgos komponentos, kur katrai komponentei ir savi uzdevumi un mērķi padara lietojumprogrammu vieglāk saprotamo un pārvaldāmo, 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ģiska komponente Modelis iekapsulē datu kodolu un pamata funkcionalitāti kas nav atkarīga no attēlojuma.
Loģiska 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ģiska komponente Kontrolleris saņem un nolemj kā apstrādāt, kurus saņem no lietotāja un translē signālus komandās, kas tiek sūtītas Modelim vai Skatam.
MVC mērķis padarīt Modeli neatkarīgu no Skata un Kontrollera, kuri kopa veido lietotāja saskarni lietojumprogrammā. Tāda neatkarība atļauj izstrādāt un testēt modeli neatkarīgi no tas 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 citam lietojumprogrammas komponentēm, vai arī paziņot citam komponentēm par sava stāvokļa izmaiņām.
Satura rādītājs |
[izmainīt šo sadaļu] MVC struktūra
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 klāšu diagramma. Modelis satur Novērotāju kolekcija. Gan Skats, gan Kontrolleris ir abstrakti novērotāji.
[izmainīt šo sadaļu] MVC dalībnieki
[izmainīt šo sadaļu] Modelis
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
[izmainīt šo sadaļu] Pasīvais Modelis
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.
[izmainīt šo sadaļu] Aktīvais Modelis
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.
[izmainīt šo sadaļu] Skats
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
[izmainīt šo sadaļu] Kontrolleris
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
[izmainīt šo sadaļu] Attiecības
[izmainīt šo sadaļu] Modelis-Skats
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.
[izmainīt šo sadaļu] Skats-Kontrolleris
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
[izmainīt šo sadaļu] Kontrolleris-Modelis
Attiecības starp Modeli un Kontrolleri tiek definētas izmantojot vēl vienu projektēšanas šablonu Komanda (Command).