Model-View-Controller (MVC) is een architectuurpatroon dat de code van een applicatie opsplitst in drie losse componenten: het model, de view en de controller. Elk onderdeel heeft een eigen, duidelijk afgebakende taak. Door die scheiding blijft de code overzichtelijk en kun je onderdelen onafhankelijk van elkaar ontwikkelen, testen en onderhouden. MVC is daarmee een van de meest gebruikte patronen voor web- en mobiele software.
Uit welke onderdelen bestaat MVC?
De naam verwijst rechtstreeks naar de drie bouwstenen die samen het patroon vormen. Elk onderdeel heeft een eigen verantwoordelijkheid:
- Model: bevat de logica en de gegevens van de applicatie. Het beheert de toegang tot die data en bewaakt dat ze consistent en geldig blijven.
- View: verzorgt de presentatie. Deze component toont de gegevens aan de gebruiker en vangt de invoer op die de gebruiker levert.
- Controller: verwerkt de invoer van de gebruiker en werkt op basis daarvan het model bij. De controller is de schakel tussen model en view.
Doordat elk onderdeel maar een taak heeft, weet je bij een aanpassing precies waar je moet zijn. De presentatie ligt in de view, de bedrijfslogica in het model en de afhandeling van acties in de controller.
Hoe werkt MVC in de praktijk?
Stel dat een bezoeker op een knop klikt. Die actie komt eerst bij de controller binnen. De controller bepaalt wat er moet gebeuren en vraagt het model om de bijbehorende gegevens op te halen of te wijzigen. Het model voert die bewerking uit en levert het resultaat terug. Vervolgens kiest de controller de juiste view, die de bijgewerkte gegevens netjes aan de gebruiker toont.
De view en het model kennen elkaar dus niet rechtstreeks: de controller houdt beide bij elkaar. Deze eenrichtingsstroom voorkomt dat een wijziging in de presentatie per ongeluk de logica of de data raakt.
Waarom kies je voor MVC?
De grootste winst van MVC is de scheiding van verantwoordelijkheden. Die levert in de praktijk een aantal concrete voordelen op:
- Onderhoudbaar: je past een onderdeel aan zonder de rest overhoop te halen. Een nieuwe vormgeving raakt de logica niet.
- Testbaar: het model bevat de logica los van de presentatie, waardoor je die apart en gericht kunt testen.
- Samenwerking: een ontwerper kan aan de view werken terwijl een ontwikkelaar het model bouwt, zonder elkaar in de weg te zitten.
- Herbruikbaar: dezelfde logica in het model kun je aan meerdere views koppelen, bijvoorbeeld een web- en een mobiele weergave.
Veel moderne toepassingen zijn bovendien gebouwd op een framework dat MVC als uitgangspunt neemt. Zo'n framework neemt de standaardstructuur uit handen, zodat je je op de eigenlijke functionaliteit kunt richten.
MVC en verwante patronen
MVC staat niet op zichzelf. Het wordt vaak gecombineerd met andere patronen die het model ondersteunen bij de toegang tot gegevens, zoals het Data Access Object (DAO) of het Repository pattern. Die regelen hoe data uit een database wordt gelezen en weggeschreven, terwijl MVC de grote lijnen van de applicatiestructuur bepaalt.
Naast MVC bestaan er varianten met een net iets andere taakverdeling, zoals MVP en MVVM. Ze delen hetzelfde uitgangspunt: presentatie, logica en data gescheiden houden.
Waar wordt MVC gebruikt?
MVC is een populaire keuze voor webapplicaties en mobiele apps, omdat die veel gebruikersinvoer verwerken en gegevens efficient moeten beheren. Denk aan een webshop, een boekingssysteem of een beheeromgeving. Het patroon past ook goed bij een responsive design, doordat dezelfde logica meerdere weergaves kan bedienen. Overweeg je een maatwerktoepassing en wil je een website laten maken die schaalbaar en onderhoudbaar is? Dan vormt een MVC-structuur een solide basis.
Veelgestelde vragen over MVC
Is MVC een programmeertaal?
Nee. MVC is een architectuurpatroon, oftewel een manier om code te structureren. Je past het toe binnen een taal of framework, niet in plaats daarvan.
Wat is het verschil tussen het model en de controller?
Het model beheert de gegevens en de logica; de controller verwerkt de invoer van de gebruiker en bepaalt welke actie op het model volgt en welke view wordt getoond.
Moet ik altijd MVC gebruiken?
Niet per se. Voor kleine projecten kan het overdreven zijn. Bij toepassingen met veel logica en interactie loont de structuur zich snel in onderhoud en overzicht.
In het kort: MVC splitst een applicatie op in model, view en controller. Het model beheert logica en data, de view toont de gegevens en de controller verwerkt invoer en houdt beide bij elkaar. Zo blijft software overzichtelijk, testbaar en eenvoudig te onderhouden.