Model-View-Controller
Bemærk, at dette pattern har to fortolkninger. Det er den første fortolkning af MVC, som vi anvender på 2. semester.
MVC som UI pattern
MVC er oprindelig et UI design pattern, som hjælper med at separere forretningslogik, præsentationslogik, og navigationslogik.
Modellen er ansvarlig for at indkapsle applikationsdata, dvs. entitetsklasser som fx Employee
og den tilhørende forretningslogik (fx beregning af løn).
Views renderer et svar til brugeren med brug af data fra modellens objekter (vha. jsp, dynamiske html).
Controllers er ansvarlige for at modtage en forespørgsel fra brugeren og kalde backend services (som fx beregning af løn eller registrering af ny medarbejder). Controlleren er typisk en servlet, der står for navigationen mellem jsp sider og almindelige Java klasser.
Formålet med MVC er løs kobling af komponenter med henblik på kodegenbrug, parallel udvikling og høj maintainability. Rationalet er:
- at brugergrænseflader, dvs. Views ændrer sig hyppigere end domæneviden, altså Modellen, og derfor er det godt at holde dem adskilt
- at forskellige udviklerprofiler kan arbejde med hhv. brugergrænsefladen (web designer) og selve programlogikken (programmør).
- at adskillelsen af View og Model gør det lettere at unit teste de almindelige Java klasser i Modellen, fordi der kan testes uden for en web server.
Hovedprincipperne er:- ikke at koble ikke-UI objekter direkte til UI objekter.
- ikke at placere forretningslogik (f.eks. momsberegning) i UI objekter.
MVC som arkitektur pattern
MVC er senere blevet benyttet som et large-scale arkitektur-pattern, hvor Model repræsenterer domæne/forretningslogik-laget View repræsenterer præsentationslaget, og Controllere er workflow objekter i domænelaget.