Kahjuks, ei saa teps mitte nõustuda Egoni definitsiooniga.
MVC on muidugi üks segane värk ja veebist võib leida palju erinevaid definitsioone, aga minu meelest on kõige selle juures peamine vastutuse eraldamise printsiip, mis taandub sellele, et programmi sisemine loogika ning esitlusloogika peaksid olema üksteisest eraldatud.
MVC antinäide oleks klassikaline PHP segapudru, kus läbisegi andmebaasipäringutega pritsitakse välja HTML-i ja töödeldakse sisendparameetreid.
Heaks stiiliks oleks aga kõik need kolm loogikat lahus hoida. Just nimelt loogikad:
Mudel kannab endas rakenduse põhiloogikat (öeldakse ka "äriloogikat", aga see on eksitav termin, sest see ei pea olema sugugi seotud mingigi äriga). Näiteks kalkulaatori puhul on just Mudel see kes teab kuidas arvutusi teha. Ehk nagu nimigi ütleb - ta modelleerib selle domeeni loogikat, milles rakendus tegutseb (olgu selleks domeeniks siis matemaatikatehted või kasside kasvatamine).
Vaade kannab endas esitlusloogikat, ehk kuidas rakendus ekraanil välja näeb. Vaade võib olla lihtne HTML template, kus lihtsalt muutujad ära asendakse. Aga see võib sisaldada ka keerukaid algoritme joonistamaks ekraanile animeeritud 3D objekte.
Kontroller tegeleb aga kasutajalt saadud sisenditega: teksti sisestamine, hiire liikumine, serverisse saadetavad HTTP päringud. Kontroller interpreteerib saadud sisendeid ning käsutab nende põhjal mudelit. Näiteks kui kasutaja vajutab kalkulaatori "+" nuppu kutsub kontroller välja mudeli liitmise meetodi, mis teostab liitmise ja teavitab omakorda vaadet, et see näiteks saadud tulemust.
MVC ei pea aga olema midagi hiiglaslikku, mis hõlmab enda all kogu rakendust, nagu ehk ülalkirjeldatust võib välja lugeda. Ka rakenduse pisikised komponendid võivad endas sisaldada pisikesi MVC-sid. Näiteks see Egoni poolt välja toodud JTable.
Samuti ei tasu arvata, et MVC põhimõtete järgimiseks on oluline kõigi kolme osa range eraldamine. Näiteks mingi lihtsa käsurea programmi puhul võib kogu vaate moodustada paar printf-i - oleks tobe neid kuidagi ära abstraheerida. Samas kui programmi sisendparameetrite töötlus oleks hea eraldada muust loogikast. Lihtsate GUI-de puhul võib jällegi ära kaduda kontroller - lihtsam on siduda vaade otse mudeliga, näiteks sidudes vormi nupu mudeli mingi meetodiga.
Nagu ikka, peamine on mõtelda mida antud kontekstis kõige targem teha oleks.