Mis on Model-View-Controller?

Mudelivaate kontroller (MVC) on teatud tüüpi tarkvara arhitektuur ja kujundusmuster, mis segmenteerib programmi iga elemendi täpselt määratletud funktsionaalsusvaldkondadeks. Mudel-vaate-kontrolleri arhitektuuris tegeleb mudel kogu sisemise programmiloogikaga, mis töötleb, salvestab, toodab ja muul viisil töötleb ja arvutab andmeid. Vaateaspekt vastutab mudeli teabe kuvamise eest kasutaja jaoks ning see annab ka võimaluse kasutajal programmi sisend anda. Kontroller võtab vaatest sisendi, hindab või töötleb seda muul viisil ja suhtleb mudeliga, et muuta andmeid või programmi olekut, mida lõpuks kuvatakse kasutajale. Ehkki mudeli-vaaturi-kontrolleri kujundus nõuab funktsioonide kapseldamiseks programmi, peavad need kolm sektsiooni siiski mingil viisil üksteisega suhtlema ja üldiselt on nad mõnes mõttes üksteisest sõltuvad, erinevalt teistest agressiivsematest disainimustritest.

Üsna sageli on mudeli-vaate-kontrolleri muster näha rakendustes, mis haldavad graafilist kasutajaliidest (GUI). MVC mustrit kasutades tegeleb GUI erinevate visuaalsete elementidega vaade, selle salvestamise ja töötlemisega, kus ja mida kasutaja klõpsab, tegeleb kontroller ning tegelikult info muutmise või info laadimise teeb mudel. Olenevalt rakenduse täpsest kujundusest võib MVC mustri igal komponendil olla mehhanism, mis suhtleb teiste komponentidega, näiteks võib mudel anda vaatele otse käsu ekraani värskendada või vaatel on viis teavitada kontrollerit, et see värskendab ekraani ega võta vastu uut sisendit. Erinevalt mõningatest kujundusmustritest, mis kasutavad rangelt musta kasti lähenemisviisi, kipuvad mudelivaate kontrolleri programmid olema veidi paindlikumad, kuigi mõned rakendused võivad muuta MVC programmi modulaarseks muutmise või silumise keeruliseks.

Teatud juhtudel ei pea mudelivaate kontrolleri muster sisaldama ainult ühte igast komponendist. Üks näide on rakendus, millel on mitu vaadet, näiteks mitu monitori, või ekraan, mida saab näha mitmel kliendiseadmel. Rakenduses, mis võimaldab paljudel kasutajatel juurdepääsu andmebaasile, saab kasutada mitut vaadet ja kontrollereid, mis kõik vastavad ühele mudelile. Enam levinud on aga selliste süsteemide kavandamine, mis säilitavad mudeli-vaate-kontrolleri komponentide suhet üks-ühele.

Kuigi mudeli-vaate-kontrolleri komponendid sõltuvad üksteisest, võib MVC-mustrit kasutavate süsteemi teatud osade muutmine olla palju lihtsam kui siis, kui mustrit üldse ei kasutata, eriti kui tegemist on mitteobjektorienteeritud süsteemiga. rakendusi. Kui rakendus kasutab komponentidevahelise interaktsiooni rakendamiseks tagasihelistusi või kuulajaid ja vaatlejaid, saab iga komponenti muuta ilma teisi kahte mõjutamata. See tähendab, et uut GUI-d saab juurutada ilma mudelit või kontrollerit mõjutamata. Tuleb siiski märkida, et mudelivaate-kontrolleri süsteemi põhjalikud muudatused võivad nõuda iga üksiku komponendi jaoks väikest ümberkodeerimist.