Model-View-Controller (MVC) · Mindmaps
Model-View-Controller (MVC). Et redigerbart mindmap med farvede grene, underemner og forbindelser. Buede linjer viser sammenhænge; pile bruges, når retningen har betydning.
MVC deler en applikation op i tre dele med én regel: controlleren håndterer input, modellen ejer tilstanden og reglerne, og viewet gengiver modellen, og hverken viewet eller controlleren rører tilstanden direkte.
Model-View-Controller (MVC) · Mindmaps
The interactive MindMap canvas for this explanation — every lane, row and arrow above is a real QueryChart diagram you can open and edit.
Sådan læser du mindmappet
- Begynd ved emnet i midten, og følg en farvet gren til de tilhørende idéer.
- Buede linjer viser sammenhænge; pile bruges, når retningen har betydning.
User input
Denne gren samler “User interacts with the interface”.
Controller
Denne gren samler “The controller is the traffic cop: it reads the user's action, decides what it means and tells the model what to change. It holds no state itself.”, “Controller updates the model”.
Model
Denne gren samler “The model is the single source of truth — data and the rules that govern it. Both the controller and the view read from it, which is why they never fight over state.”, “Model notifies observers of the change”.
View
Denne gren samler “The view is a projection of the model: it never changes data directly, it only asks the model and displays what it returns.”, “User sees the updated interface”.
Forbindelser på tværs
Controlleren håndterer input; modellen ejer tilstanden; viewet gengiver: tre ansvar, tre baner.
Hverken viewet eller controlleren skriver data; alle ændringer går gennem modellen.
Modellen underretter observatører frem for at kommandere viewet, så én model kan drive mange views.
Adskillelsen gør hver del testbar for sig: mønsterets oprindelige gevinst.
MVC er stamfader til mange moderne mønstre (MVVM, MVP, stores i Redux-stil), der alle bevarer den samme adskillelse.
Key relationships and takeaways
- Controlleren håndterer input; modellen ejer tilstanden; viewet gengiver: tre ansvar, tre baner.
- Hverken viewet eller controlleren skriver data; alle ændringer går gennem modellen.
- Modellen underretter observatører frem for at kommandere viewet, så én model kan drive mange views.
- Adskillelsen gør hver del testbar for sig: mønsterets oprindelige gevinst.
- MVC er stamfader til mange moderne mønstre (MVVM, MVP, stores i Redux-stil), der alle bevarer den samme adskillelse.
When to use this visual
- At introducere mønsteret for en udvikler, før de læser et frameworks dokumentation: trekanten er det kort, hvert framework implementerer.
- At forklare, hvorfor en kodebase er svær at ændre: tilstand håndteret i viewet er et brud på MVC, og det er synligt på lærredet.
- At sammenligne MVC med de lagdelte arkitekturer i diagrammet om clean architecture.
Sådan fungerer det
Tilpas emnet i midten
Giv emnet et navn, der passer til dit projekt eller din undervisning.
Udbyg grenene
Rediger idéerne, og tilføj eksempler eller noter.
Forbind beslægtede idéer
Tegn forbindelser på tværs af grene; brug kun pile, når retningen betyder noget.
Ofte stillede spørgsmål
Hvad er MVC?
MVC (Model-View-Controller) er et softwaremønster, der deler en applikation op i tre dele: controlleren håndterer input, modellen ejer data og forretningsregler, og viewet gengiver modellen. Fordelen ved adskillelsen er, at hver del kan udvikles og testes uafhængigt, og at den samme model kan vises af mange views. Det er det mønster, de fleste webframeworks er bygget på.
Hvorfor er modellen midtpunktet i MVC?
Fordi modellen er den eneste kilde til sandhed. Hvis både controlleren og viewet kunne skrive data, ville de drive fra hinanden og slås om tilstanden. At holde alle ændringer i modellen betyder, at der er præcis ét sted, hvor reglerne for data bor, og at viewet altid er en projektion af en konsistent model. Derfor placerer diagrammet begge modelbokse i deres egen bane.
Hvad sker der, hvis jeg lægger logik i viewet?
Så får du et antimønster, der somme tider kaldes det »fede view«: visningskode blandet med forretningsregler, som ikke kan testes uden at blive gengivet, og som driver væk fra modellen. Den samme kritik rammer en controller, der holder forretningslogik i stedet for at uddelegere. Disciplinen i MVC er, at hver bane bliver i sin bane: diagrammets tre adskilte rækker er den regel gjort synlig.
Hvordan hænger MVC sammen med moderne frameworks?
De fleste moderne frameworks bevarer trekanten under nye navne: MVVM tilføjer et view-model-lag, MVP giver viewet en presenter, og biblioteker til tilstandshåndtering som Redux er i bund og grund modellen med en strengere regel for underretning. Lærredets grundsløjfe (input ændrer tilstand, tilstand driver output) er den invariant, hver eneste af dem bevarer.
Rediger dette mindmap i QueryChart
Åbn mindmappet på et redigerbart lærred. Flyt idéer, tilføj grene, og tegn forbindelser.