Model - View – Controller

26 maart 2006, 00:21

Een tijd geleden beloofde ik de concepten achter het Ruby on Rails framework uit te leggen. In dit artikel zal ik het MVC ontwerppatroon (Model – View – Controller) toelichten.
MVC is een manier om de code van een applicatie in 3 componenten op te delen:

  • Het Model: gaat om met data en met de logica die hierop van toepassing is
  • De View: verzorgt de interface van een applicatie
  • De Controller: verzorgt de logica achter een applicatie

Deze opdeling maakt dat code makkelijker te schrijven en te onderhouden is.

MVC maakt het bijvoorbeeld eenvoudiger om het ontwerp (View) van een website en hetgeen achter de schermen gebeurt (Model & Controller) aan twee verschillende personen toe te vertrouwen. De ontwerper neemt in dit geval de View voor zijn rekening (deze wordt geschreven in RHTML; een mix van HTML met een minimale hoeveelheid Ruby-code). De programmeur levert het Model en de View (pure Ruby-code).

MVC kan best verduidelijkt worden aan de hand van een voorbeeld: een online winkel.

  • Het Model gaat zoals eerder vermeld om met data en met de logica die hierop van toepassing is. In het voorbeeld betekent dit dat het Model producten ophaalt uit een database, maar tegelijkertijd ook een methode kan bevatten die ervoor zorgt dat enkel producten die vandaag leverbaar zijn opgehaald worden. Het Model kan bijvoorbeeld ook een winkelmandje beheren én een methode bevatten die een korting toekent als er voor meer dan 20€ besteld wordt (=”data-logica”).
  • De View verzorgt de interface. In ons voorbeeld geeft hij een lijst van producten weer, en bevat hij manieren om deze producten aan een winkelmandje toe te voegen (zonder de achterliggende logica voor deze actie te verzorgen).
  • De Controller bevat de logica om een product aan een mandje toe te voegen, om een mandje leeg te maken,… Hij houdt dus rekening met de input van de gebruiker (View; bijvoorbeeld klikken op “mandje leegmaken”) om het Model aan te passen. De Controller doet de applicatie werken.

Grafisch ziet MVC er als volgt uit:

Model - View - Controller

  1. Via de browser vraagt een gebruiker een applicatie iets te doen
  2. De Controller beantwoord deze vraag door via het Model (dat met de database communiceert) data op te halen
  3. De Controller roept de View aan om de opgehaalde data in een layout te plaatsen
  4. De View (layout) wordt weergegeven in de browser

Toegepast op ons voorbeeld:

  1. Een gebruiker vraagt via zijn browser een lijst met leverbare producten op
  2. De Controller beantwoord deze vraag door via het Model de leverbare producten uit de database op te halen
  3. De Controller vraagt de View om de opgehaalde producten in een lijst te plaatsen
  4. De lijst met producten wordt weergegeven in de browser


Reageer

Naam
Email
Website
Reactie

© 2006-2010 - Johan Van Mol