Model-View-Controller (MVC) är ett arkitekturmönster som används inom systemutveckling. I komplexa datorapplikationer kan det vara lämpligt att separera data (Model) och presentation (View) så att inte datahanteringen får konsekvenser på grund av förändringar i presentationslagret, samt att data kan omorganiseras utan att behöva ändra i presentationslagret. MVC löser detta problem genom att separera data och affärslogiken från presentationen och användarinteraktionen, genom att introducera en mellanliggande komponent: Controllern.

Model-View-Controller-koncept. Den heldragna linjen representerar en direkt förbindelse, den streckade linjen indikerar förbindelse via en observatör.

Beskrivning av arkitekturmönstret redigera

MVC är ett av de äldsta arkitekturmönstren som beskrivits. För att arbeta med en lösning enligt mönstret kan ett antal designmönster utnyttjas, till exempel observatör, kommando, fabriksmetod och fasad.

Det är vanligt att dela upp en applikation i separata lager: presentation (användargränssnitt), domän och data. I MVC är lagren: Model (domän och data), View (gränssnitt) och Controller (inputlogik). MVC hanterar domän och data som en komponent.

MVC omfattar mer av applikationens arkitektur än vad som är normalt för ett designmönster. Termen arkitekturmönster kan således vara passande eller kanske aggregerat designmönster.

Model redigera

Model utgör den domänspecifika representationen av den information som applikationen bearbetar. Model är ett annat namn för domänlagret. Domänlogik kan exempelvis kontrollera om dagens datum är användarens födelsedag, eller beräkna kostnaden av en kundvagn.

Många tillämpningar använder ett icke-flyktigt lagringsmedium (såsom en databas) för att lagra data. MVC nämner inte specifikt datalagret utan det förmodas vara under eller i model.

View redigera

View renderar model till en form som är lämplig för interaktion, normalt ett användargränssnitt. MVC används ofta i webbapplikationer där view är HTML-sidorna och koden som hämtar dynamisk data för sidorna är model.

Controller redigera

Controller bearbetar och svarar på händelser, som användarinteraktion, och kan framkalla ändringar i model och view.