b'\n_START_ARTICLE_\nModel-view-controller-model\n_START_PARAGRAPH_\nModel-view-controller (of MVC) is een ontwerppatroon ("design pattern") dat het ontwerp van complexe toepassingen opdeelt in drie eenheden met verschillende verantwoordelijkheden: datamodel (model), datapresentatie (view) en applicatielogica (controller)._NEWLINE_Het scheiden van deze verantwoordelijkheden bevordert de leesbaarheid en herbruikbaarheid van code. Het maakt ook dat bijvoorbeeld veranderingen in de gebruikersinterface niet direct invloed hebben op het datamodel en vice versa. MVC werd voor het eerst gebruikt in de eerste implementaties van Smalltalk.\n_START_SECTION_\nWerking\n_START_PARAGRAPH_\nNaast het opsplitsen van de logica in verschillende klassen, ligt een ingewikkelde wisselwerking van boodschappen tussen objecten van deze klassen aan de basis van het patroon. Het komt erop neer dat iedere view die aangepast moet worden bij veranderingen in het model, dit aan het model mededeelt door zich te registreren bij het model. Het model houdt aldus een lijst bij van alle views die geregistreerd zijn. Bij aanpassingen van het model zal het model zichzelf updaten door de lijst van views af te wandelen en aan elke view te melden dat er een verandering heeft plaatsgevonden. Waarop elke view aan het model \'vraagt\' wat er is veranderd en dan zelf besluit om zich aan te passen of niet._NEWLINE_De gebruiker heeft contact met de view. De view geeft de gegevens door naar de controller. De controller verwerkt de gegevens. De verwerkte gegevens worden doorgegeven aan het model. Het wordt afgeraden om de view rechtstreeks te koppelen aan het model.\n_START_SECTION_\nZichtbaarheid\n_START_PARAGRAPH_\nDe controller kent de view en het model._NEWLINE_De view kent het model._NEWLINE_Het model heeft geen weet van eventuele views, wat het uitbreiden van de applicatie makkelijker maakt.\n_START_SECTION_\nVoordelen\n_START_PARAGRAPH_\nHet grote voordeel van het patroon is dat er heel gemakkelijk nieuwe soorten views toegevoegd kunnen worden zonder het model aan te passen. Zo was het in 1994 reeds mogelijk om in Smalltalk te programmeren via een web-interface. Smalltalk implementeerde daartoe gewoon een html-view op zichzelf._NEWLINE_Het resultaat was VisualWave, een webversie van VisualWorks (de naam van het Smalltalk-systeem). Dit was mogelijk door het feit dat de hele Smalltalk-ontwikkelingsomgeving volledig volgens het MVC-patroon was geschreven.\n_START_SECTION_\nImplementaties\n_START_PARAGRAPH_\nVoor Java bestaan veel MVC-frameworks. Bekende zijn Struts, JavaFX en Spring._NEWLINE_Het MVC-framework voor Ruby is Ruby on Rails. Voor Python is Django het bekendste MVC-framework. Bekende MVC-frameworks voor PHP zijn Zend Framework, CodeIgniter, Kohana, Laravel, CakePHP en Phalcon._NEWLINE_Voor Microsoft .NET zijn er MonoRail, Vici MVC en een native .NET-implementatie, genaamd Microsoft ASP.NET MVC. Voor Adobe ColdFusion zijn er onder andere Mach-II, Model-Glue en ColdBox. Voor Perl is er het Catalyst framework.'