"Hei, Amigo!"

"Hei, Bilaabo!"

"Du er allerede en solid programmerer. Så i dag skal vi ha en leksjon om MVC."

"MVC står for ModelViewController . Det er et arkitektonisk designmønster for store applikasjoner, der applikasjonen er delt inn i tre deler."

"Den første delen inneholder all applikasjonens forretningslogikk . Denne delen kalles modellen . Den inneholder koden som gjør alt applikasjonen ble opprettet for å gjøre. Denne delen er minst avhengig av de andre."

"Den andre delen inneholder alt som gjelder visning av data til brukeren . Denne delen kalles visningen . Den inneholder koden som kontrollerer visning av vinduer, sider, meldinger, etc."

"Den tredje delen inneholder koden som behandler brukerhandlinger . Eventuelle brukerhandlinger ment å endre modellen skal håndteres her. Denne delen kalles Controller   . "

"Denne tilnærmingen lar deg lage tre ting uavhengig:  programmets logikk (modellen) , mekanismen for å vise programmets data til brukeren (visningen) , og en behandler for brukerinndata/handlinger (kontrolleren) ."

"Applikasjoner har ofte flere visninger . Dette er normalt. Du kan se nøyaktig samme data i Excel som både tall og diagrammer. I spill kan du se hendelser fra en førstepersons-, tredjepersons- eller kartvisning, pluss mange andre . Alle disse er forskjellige visninger for en enkelt modell ."

"All koden som bestemmer hva som skal endres i modellen som svar på brukerhandlinger, samles inn i kontrolleren. For eksempel, hvis brukeren bestemmer seg for å lukke programmet, må du lagre modellens data til en fil på disk. Eller hvis brukeren legger inn nye data, må du legge dem til i modellen. Modellen vil da varsle alle visningene om dataendringene, slik at de bare viser den nåværende tilstanden til dataene."

"Si det igjen."

"Fra perspektivet til en Java-utvikler kan vi si at modellen, visningen og kontrolleren er tre grupper av klasser der:"

" a)  hver del har sitt eget formål;"

" b)  relasjonene mellom klassene i en enkelt gruppe er veldig sterke;"

" c)  relasjonene mellom grupper er svært svake;"

" d)  måtene delene kommuniserer med hverandre på er sterkt regulert."

"Og her er en annen måte å forestille seg det på:

MVC - 1

"Modellen er den mest uavhengige delen av systemet . Den er ikke avhengig av visningen eller kontrolleren. Modellen kan ikke bruke klasser fra visningen eller kontrollergruppene(!)."

"Visningens primære begrensning er at den ikke kan endre modellen . Visningsklasser kan få tilgang til modellen for data eller for å abonnere på hendelser, men visningsklasser kan ikke endre modellen."

"Kontrollerens primære begrensning er at den ikke viser data . Kontrolleren behandler brukerhandlinger og modifiserer modellen deretter."

"Men hvorfor trenger jeg dette?"

"Det at du ikke bruker dette akkurat nå, betyr ikke at du ikke kommer til å bruke dette i nær fremtid. Du er her og studerer for å få jobb. Og selv om denne kunnskapen ikke viser seg nyttig mens studerer, vil det definitivt komme godt med mens du jobber."

"Tross alt, virkelige prosjekter og intervjuer venter fortsatt på deg ..."

"Vi er her og snakker sammen nå, men kanskje om en måned er du allerede i jobb."

"Du har helt rett, Bilaabo. Jeg skal lytte nøye til deg."

"MVC-mønsteret er veldig vanlig i applikasjonsarkitektur. Du må kjenne til det, slik at du ikke plutselig begynner å legge til visningsklasser i modellen fordi du finner den måten mer praktisk."

"Det viktigste i ethvert prosjekt er arkitekturen.  Din oppgave på dette stadiet er ikke så mye å være i stand til å skape en god arkitektur, som det er å lære å forstå andres. Du må fortsatt vokse i en periode et par år før du lager ditt eget. Men du må forstå hva andre mennesker har skapt. Med en gang."

"Når en applikasjon bruker en standardarkitektur, blir alt mye klarere. Ved å kjenne arkitekturen vet du hvor ting er, hvordan alt samhandler, omtrent hvordan programmet fungerer, hvor du skal legge til en nødvendig klasse, og hvor du skal søke etter årsaken til et insekt."

"Men hvis du ikke er kjent med standard tilnærminger til arkitektur, så vil ikke selv den beste arkitekturen fortelle deg noe. Du vil være som en bonde fra middelalderen som ser på en ny bil. En standardbil."

"Jeg skjønner. Takk for den interessante leksjonen, Bilaabo."

"Til slutt, her er en god link som du absolutt bør sjekke ut:"

Link til tilleggsmateriell