Üks populaarsemaid kasutajaliides loomise mustreid veebirakenduste juures on Model-View-Controller ehk lühidalt MVC. Seda kohtame nii PHP, .NET, Ruby ja Java maailmas, kuid mõnes neist võib lähenemisnurk olla veidi erinev.
Liigume edasi nüüd mustri lahkamise juurde:
- Model – Selle all mõeldakse tihtipeale ärimudelit, mis pole kõige valem, kuid parem oleks mõelda vaatemudelit. Põhjus on selleks lihtne – vaates võivad olla spetsiifilised väärtused kuvamise jaoks olla (n: mõne elemendi CSS klass) ning need ei peaks olema ärimudeli küljes. Lisaks võiks see sarnaneda võimalikult Data Transfer Objectile, mille teisendab Controller ärimudelist. Sel puhul ei peaks muretsema selle üle, et kui mingit meetodit või atribuuti kutsuda ei hakata andmebaasi vms kallale minema.
- View – Peamiselt HTML vaade kus seotakse andmed malliga. Teisisõnu lõpptulemus, mida kasutaja näeb.
- Controller – Küsib andmehoidlast vastava ärimudeli, käivitab vastavad äriprotsessid ja teisendab tulemuse vaatemudeliks ning kuvab vaate.

Tekkis väike kokkupuude Joomla!-ga ning ka seal on välja hõigatud, et kasutatakse MVC-d. Kõik tundus mõnus kuni reaalselt koodi tuli kirjutama hakata, sest sellega pandi mu arusaam mustrist kahtluse alla. Modeli tähendab seal hübriidi vaatemudelist ja andmehoidlast. Siinkohal võiksime apelleerida ActiveRecordi mustrile, et päringud ongi mudeliga koos, kuid siiski tegemist on vaatemudeliga ning reaalne ärimudel võiks olla sealne JTable objekt.
Järgmine oluline samm komponendi loomisel on Controlleri loomine, mis oli vägagi sarnane mu enda arusaamaga. Siiski väheke häiris mind see, et entry point tuli ise luua, mis võiks tähendada reaalselt FrontControllerit. Veidi mõistlikum viis oleks kasutada viidete reegleid (routing) Controllerite loomisel. Õnneks seal saab kasutada ühte ja sama faili erinevate komponentide tegemisel ning ise ei ole vaja väga leiutada.
Controlleri üks ülesanne on valida välja õige vaade (View). Vaated on tavaliselt HTML mallid, kuid sel puhul oli PHP fail ning vajas veel toimetamist. ASP.NET maailmas oleks samaväärne Code Behind fail, mis kahjuks oli tihtipeale prügikasti rolliga. Vaade laadis omakorda sisse reaalse malli (Template, Layout), mis kandis vaate tegelikke ülesandeid.
Segadust oli palju mustri väänamisega, kuid ei saa öelda, et see halvasti tehtud oleks, sest ma ei mõista veel kõiki tagamaid, mis otsuste langetamisel arvesse võeti. Soovitan teistel, kes loovad mõnda sarnaseloomulist raamistikku, siis kasutada mustreid nii nagu nad üldtuntuses on. Mustrite ülesanne on vähendada probleemi kirjeldamist ja lahendamist.
Loodetavasti mu kogemus aitab teil lihtsamini tutvust teha Joomla!-ga.
Loe veel sarnastel teemadel:
- Modernselt tarkvara loomine I: Sissejuhatus, 28. oktoober
- Appi, mu rakenduses on mitu mudelit!, 27. august
- Modernselt tarkvara loomine II: Seotud paelad, 29. oktoober
- Modernne tarkvara loomine VII: Logimine või blogimine?, 26. november
- Modernne tarkvara loomine IV: Andmete kühveldamine, 16. november
KAIZEN FEED
Telli endale Kaizeni uudisvoog
KOMMENTAARIDE FEED
Telli endale kommentaaride voog
KAIZEN TWITTER
Lühiuudised Kaizeni autoritelt
KAIZEN FACEBOOK
Liitu Kaizeniga
MIS ON KAIZEN?
Kaizen on Saiku tarkvaraarendusealane blogi, kus kirjutame erinevatest lähenemistest meisterlikule tarkvaraarendusele.
KATEGOORIAD
- .NET (18)
- Analüüs/Arhitektuur (11)
- Arendus (66)
- Ettevalmistus (1)
- Juhtimine (2)
- Varia (23)
SILDIPILV
- .NET (41)
- ilus kood (23)
- Arendus (23)
- C# (20)
- Analüüs/Arhitektuur (14)
- Testimine (10)
- raamat (8)
- Ruby (8)
- projektijuhtimine (8)
- printsiibid (6)
- produktiivsus (5)
- ReSharper (5)
- PHP (5)
- NHibernate (4)
- objekt-orienteeritud (4)
- pidev integratsioon (4)
- Viited (4)
- agile (4)
- Java (4)
- Geekdinner (4)
- lean (4)
- raamatukogu (4)
- CI (3)
- Cruise Control.NET (3)
- Robert C. Martin (3)
- scrum (3)
- iteratsioon (3)
- suhtlus (3)
- jQuery (2)
- TechEd 2008 (2)
- Visual Studio (2)
- valideerimine (2)
- intervjuu (2)
- analüüs (1)
- ASP.NET (1)
- ümberstruktureerimine (1)
- üritus (1)
- CodeRush (1)
- dokumentatsioon (1)
- Kent Beck (1)
- LINQ (1)
- Martin Fowler (1)
- Moq (1)
- Rhino Mocks (1)
- stackoverflow (1)
- võltsitud objektid (1)
- Whiteboard Wednesday (1)
- hindamine (1)
- tarkvara kvaliteet (1)
- ajagraafikud (1)
- Saiku (1)
- koolitus (1)
- tagasivaate (1)
- koosolek (1)
- dünaamilised keeled (1)
- staatilised keeled (1)
- FluentNHibernate (1)
- facebook (1)
- aastapäev (1)
- Rake (1)
- Oredev 2008 (1)
- toyota way (1)
- raiskamine (1)
- NDepend (1)
- podcasts (1)
- väle tarkvaraarendus (1)
- raido tonts (1)
- minimal marketable feature (1)
- kasutajalugu (1)
- twitter (1)
- Joomla! (1)
- MVC (1)
- andmebaas (1)
- versioonimine (1)
- diskussioon (1)
- regulaaravaldised (1)
- motiveerimine (1)
- mõõdikud (1)
- agileestonia (1)
- riistvara (1)
- koolitused (1)
- kujundus (1)
- kodulehed (1)
- veeb (1)
