MVC

Programmerare kan ibland tjata om vikten av att tillämpa MVC. Men vad är MVC egentligen?. Det här dokumentet beskriver MVC utan att använda allt för många krångliga programmeringstermer.

En mer teknisk beskrivning av MVC finns på: http://framework.zend.com/manual/en/learning.quickstart.intro.html

Översatt till svenska betyder MVC: modell, vy, kontroller. MVC är ett så kallat mönster som programmerare kan följa för att skapa struktur i den kod som bygger upp ett datorprogram. Bilden nedan visar vad mönstret MVC är för något.

Module View Controller

En förenklad bild av MVC från Cycledev

Ett datorprogram består ofta av flera byggklossar. Förenklat kan varje byggkols ses bestå av en textfil som innehåller instruktioner till hur programmet ska fungera. I ett datorprogram som följer MVC är byggklossarna uppdelad i minst tre lager. Förenklat kan det ses som att de olika textfiler med instruktioner tillhör ett av de tre lagren. Det översta lagret kallas för vy. Under vyn ligger kontollerlagret och under kontrollerlagret ligger modellagret.

Vylagret består av den del av programmet som syns för användaren. De är därför den del av programmet där användaren och programmet kan kommunicera med varandra. Vylagret har som uppgift att presentera information samt ta emot signaler från användaren.

I Modellagret utförs allt arbete. Det kan exempelvis handla om att sända iväg ett mejl, ändra storleken på en bild eller spara ett dokument. Modellagret är alltså ansvarig för att utföra det faktiska arbetet i ett program.

Kontrollerlagret styr flödet av information i ett datorprogram mellan vy och modellagret. Kontrollerlagret kan ses innehålla arbetsledare som tar emot förfrågningar om arbete från vylagret och sedan delegerar ut arbetsuppgifterna till arbetarna i modellagret.

Det är också vanligt att det under modellagret finns ett persistenslager som ansvarar för att spara undan eller hämta information från olika databaser eller filer.

Det finns flera anledningar till att det är viktigt att följa MVC mönstret. Framförallt bidrar det till att koden blir mer läsbar för en van programmerare. Det ger också en tydlig ansvarsfördelning inom koden. Som programmerare vet jag att vy lagret inte innehåller någon logik. Om en bugg  skulle uppstå som tyder på ett logiskt fel är det därför högst troligt att felet ligger i modellagret. Om en kund där emot ber om en ändring i det grafisk gränssnittet så vet jag att det är i vylagret som koden ska ändras. Dessutom kan jag vara säker på att inte förstöra logiken i programmet när jag går in i vylagret och ändrar på kod. MVC medför därför flera fördelar och tillämpas med fördel i de flesta större projekt så väl som mindre projekt.

(Uppdaterad 2010-09-21)

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>