"Hej, Amigo!"

"Hej, Bilaabo!"

"Du är redan en gedigen programmerare. Så idag ska vi ha en lektion om MVC."

"MVC står för ModelViewController . Det är ett arkitektoniskt designmönster för stora applikationer, där applikationen är uppdelad i tre delar."

"Den första delen innehåller hela applikationens affärslogik . Den här delen kallas modellen . Den innehåller koden som gör allt som applikationen skapades för att göra. Den här delen är minst beroende av de andra."

"Den andra delen innehåller allt som rör visning av data för användaren . Denna del kallas vyn . Den innehåller koden som styr visning av fönster, sidor, meddelanden, etc."

"Den tredje delen innehåller koden som behandlar användaråtgärder . Alla användaråtgärder som är avsedda att ändra modellen ska hanteras här. Denna del kallas   Controller ."

"Det här tillvägagångssättet låter dig skapa tre saker oberoende av varandra:  programmets logik (modellen), mekanismen för att visa programmets data för användaren (vyn) och en hanterare för användarinmatning/åtgärder (kontrollanten) ."

"Applikationer har ofta flera vyer . Detta är normalt. Du kan se exakt samma data i Excel som både siffror och diagram. I spel kan du se händelser från en förstapersons-, tredjepersons- eller kartvy, plus många andra . Alla dessa är olika vyer för en enda modell ."

"All kod som bestämmer vad som ska ändras i modellen som svar på användaråtgärder samlas i Controller. Till exempel, om användaren bestämmer sig för att stänga programmet måste du spara modellens data till en fil på disk. Eller om användaren anger ny data måste du lägga till den i modellen. Modellen kommer då att meddela alla vyer om dataändringarna, så att de bara visar det aktuella tillståndet för data."

"Säga det igen."

"Från en Java-utvecklares perspektiv kan vi säga att modellen, vyn och kontrollern är tre grupper av klasser där:"

" a)  varje del har sitt eget syfte;"

" b)  relationerna mellan klasserna i en enda grupp är mycket starka;"

" c)  relationerna mellan grupper är mycket svaga;"

" d)  sättet som delarna kommunicerar med varandra är hårt reglerade."

"Och här är ett annat sätt att föreställa sig det:

MVC - 1

"Modellen är den mest oberoende delen av systemet . Den beror inte på vyn eller kontrollern. Modellen kan inte använda klasser från vyn eller kontrollergrupper(!)."

"Vyns primära begränsning är att den inte kan ändra modellen . View-klasser kan komma åt modellen för data eller för att prenumerera på händelser, men view-klasser kan inte ändra modellen."

"Regulatorns primära begränsning är att den inte visar data . Regulatorn bearbetar användaråtgärder och modifierar modellen därefter."

"Men varför behöver jag det här?"

"Det faktum att du inte använder det här just nu betyder inte att du inte kommer att använda det här inom en snar framtid. Du är här och studerar för att få ett jobb. Och även om den här kunskapen inte visar sig användbar medan studerar, det kommer definitivt att komma väl till pass när du jobbar."

"Trots allt, riktiga projekt och intervjuer väntar dig fortfarande..."

"Vi är här och pratar tillsammans nu, men kanske om en månad kommer du redan att jobba."

"Du har helt rätt, Bilaabo. Jag ska lyssna noga på dig."

"MVC-mönstret är väldigt vanligt i applikationsarkitektur. Du måste känna till det, så att du inte plötsligt börjar lägga till visningsklasser i modellen för att du tycker att det är mer praktiskt."

"Det viktigaste i ett projekt är dess arkitektur.  Din uppgift i det här skedet är inte så mycket att kunna skapa en bra arkitektur, som det är att lära dig förstå någon annans. Du kommer fortfarande att behöva växa under en några år innan du skapar ditt eget. Men du måste förstå vad andra människor har skapat. Direkt."

"När en applikation använder en standardarkitektur blir allt mycket tydligare. Genom att känna till arkitekturen vet du var saker är, hur allt interagerar, ungefär hur programmet fungerar, var du ska lägga till en nödvändig klass och var du ska söka efter orsaken till ett kryp."

"Men om du inte är bekant med standardmetoder för arkitektur, så kommer inte ens den bästa arkitekturen att säga dig någonting. Du kommer att vara som en bonde från medeltiden som tittar på en ny bil. En standardbil."

"Jag förstår. Tack för den intressanta lektionen, Bilaabo."

"Äntligen, här är en bra länk som du definitivt borde kolla in:"

Länk till ytterligare material