"Hej, Amigo!"

"Hej, Bilaabo!"

"Du er allerede en solid programmør. Så i dag skal vi have en lektion om MVC."

"MVC står for ModelViewController . Det er et arkitektonisk designmønster til store applikationer, hvor applikationen er opdelt i tre dele."

"Den første del indeholder hele applikationens forretningslogik . Denne del kaldes modellen . Den indeholder koden, der gør alt, hvad applikationen er skabt til at gøre. Denne del er mindst afhængig af de andre."

"Den anden del indeholder alt vedrørende visning af data til brugeren . Denne del kaldes visningen . Den indeholder koden, der styrer visning af vinduer, sider, meddelelser osv."

"Den tredje del indeholder koden, der behandler brugerhandlinger . Alle brugerhandlinger, der er beregnet til at ændre modellen, skal håndteres her. Denne del kaldes controlleren   . "

"Denne tilgang giver dig mulighed for at skabe tre ting uafhængigt:  programmets logik (modellen) , mekanismen til at vise programmets data til brugeren (visningen) og en handler for brugerinput/handlinger (controlleren) ."

"Applikationer har ofte flere visninger . Dette er normalt. Du kan se nøjagtig de samme data i Excel som både tal og diagrammer. I spil kan du se begivenheder fra en førstepersons-, tredjepersons- eller kortvisning plus mange andre . Alle disse er forskellige synspunkter for en enkelt model ."

"Al den kode, der bestemmer, hvad der skal ændres i modellen som svar på brugerhandlinger, samles i controlleren. For eksempel, hvis brugeren beslutter sig for at lukke programmet, så skal du gemme modellens data til en fil på disken. Eller hvis brugeren indtaster nye data, så skal du tilføje dem til modellen. Modellen vil så give alle visninger besked om dataændringerne, så de kun viser den aktuelle tilstand for dataene."

"Sig det igen."

"Fra en Java-udviklers perspektiv kan vi sige, at modellen, visningen og controlleren er tre grupper af klasser, hvor:"

" a)  hver del har sit eget formål"

" b)  forholdet mellem klasserne i en enkelt gruppe er meget stærke;"

" c)  forholdet mellem grupper er meget svagt;"

" d)  måden, hvorpå delene kommunikerer med hinanden, er stærkt reguleret."

"Og her er en anden måde at forestille sig det på:

MVC - 1

"Modellen er den mest uafhængige del af systemet . Den afhænger ikke af visningen eller controlleren. Modellen kan ikke bruge klasser fra visningen eller controllergrupper(!)."

"Visningens primære begrænsning er , at den ikke kan ændre modellen . Visningsklasser kan få adgang til modellen for data eller for at abonnere på begivenheder, men visningsklasser kan ikke ændre modellen."

"Controllerens primære begrænsning er, at den ikke viser data . Controlleren behandler brugerhandlinger og ændrer modellen i overensstemmelse hermed."

"Men hvorfor har jeg brug for det her?"

"Det faktum, at du ikke bruger det her lige nu, betyder ikke, at du ikke kommer til at bruge det her i den nærmeste fremtid. Du er her og læser for at få et job. Og selvom denne viden ikke viser sig nyttig, mens studerer, vil det helt sikkert komme til nytte, mens du arbejder."

"Når alt kommer til alt, venter der stadig rigtige projekter og interviews på dig..."

"Vi er her og taler sammen nu, men måske om en måned vil du allerede arbejde."

"Du har fuldstændig ret, Bilaabo. Jeg vil lytte nøje til dig."

"MVC-mønsteret er meget almindeligt i applikationsarkitektur. Du skal kende det, så du ikke pludselig begynder at tilføje visningsklasser til modellen, fordi du finder den måde mere praktisk."

"Det vigtigste i ethvert projekt er dets arkitektur.  Din opgave på dette stadium er ikke så meget at være i stand til at skabe en god arkitektur, som det er at lære at forstå en andens. Du skal stadig vokse i en et par år, før du skaber dit eget. Men du skal forstå, hvad andre mennesker har skabt. Med det samme."

"Når en applikation bruger en standardarkitektur, bliver alt meget klarere. Ved at kende arkitekturen ved du, hvor tingene er, hvordan alting interagerer, nogenlunde hvordan programmet fungerer, hvor du skal tilføje en nødvendig klasse, og hvor du skal søge efter årsagen til et insekt."

"Men hvis du ikke er fortrolig med standardtilgange til arkitektur, så vil selv den bedste arkitektur ikke fortælle dig noget. Du vil være som en bonde fra middelalderen, der kigger på en ny bil. En standardbil."

"Jeg forstår det. Tak for den interessante lektion, Bilaabo."

"Endelig, her er et godt link, som du bestemt bør tjekke ud:"

Link til yderligere materiale