Hva er modellvisningskontroller?
Model-view-controller (MVC) er en type programvarearkitektur og designmønster som segmenterer hvert element i et program i veldefinerte funksjonsområder. I arkitektur av modell-visning-kontroller behandler modellen all den interne programlogikken som manipulerer, lagrer, henter og ellers håndterer og beregner data. Visningsaspektet er ansvarlig for å vise informasjon fra modellen for brukeren, og det gir også en måte for brukeren å gi innspill til programmet. Kontrolleren tar innspill fra visningen, vurderer eller behandler det på annen måte og samhandler med modellen for å endre data eller programtilstanden, som til slutt vises til brukeren gjennom visningen. Selv om utformingen av modell-viewer-controller krever et program for å innkapsle funksjonalitet, trenger de tre seksjonene fortsatt å samhandle med hverandre på noen måte og er generelt avhengige av hverandre i en viss forstand, i motsetning til andre mer aggressive designmønstre.
Ganske ofte blir modell-view-controller-mønsteret sett i applikasjoner som administrerer et grafisk brukergrensesnitt (GUI). Ved å bruke MVC-mønsteret blir de forskjellige visuelle elementene i GUI håndtert av visningen, innspillingen og behandlingen av hvor og hva en bruker klikker blir håndtert av kontrolleren, og faktisk endrer informasjon eller laster informasjon ut av modellen. Avhengig av den nøyaktige utformingen av en applikasjon, kan hver komponent i MVC-mønsteret ha en mekanisme for å samhandle med de andre komponentene, for eksempel at modellen kan instruere visningen direkte om å oppdatere skjermen eller visningen har en måte å fortelle kontroller at det er forfriskende på skjermen og ikke godta ny inngang. I motsetning til noen designmønstre som tar en streng black-box-tilnærming, har modell-view-controller-programmer en tendens til å være litt mer fleksible, selv om noen implementeringer kan gjøre et MVC-program vanskelig å endre eller feilsøke modulært.
I visse tilfeller trenger ikke modell-visning-kontroller-mønsteret bare inneholde en av hver komponent. Et eksempel er et program som har flere visninger, for eksempel flere skjermer, eller et skjermbilde som kan sees på flere klientenheter. Flere visninger og kontrollere kan brukes i et program som lar mange brukere få tilgang til en database, alt svarer til en enkelt modell. Det er imidlertid mer vanlig å designe systemer som opprettholder en-til-en-forholdet mellom modell-view-controller-komponentene.
Selv om komponenter for modellvisningskontroller er avhengige av hverandre, kan det være mye enklere å modifisere visse deler av et system som bruker MVC-mønsteret enn om det ikke ble brukt noe mønster i det hele tatt, spesielt i tilfelle ikke-objektorientert applikasjoner. Hvis en applikasjon bruker tilbakeringinger eller lyttere og observatører for å implementere interaksjoner mellom komponentene, kan hver komponent endres uten å påvirke de to andre. Dette betyr at en ny GUI kan implementeres uten å påvirke modellen eller kontrolleren. Det skal imidlertid bemerkes at grunnleggende endringer i et modell-view-controller-system kan kreve en liten mengde omkoding for hver enkelt komponent.