Ez az anyag a "Bevezetés a vállalkozásfejlesztésbe" sorozat része. Korábbi cikkek:
Ebben a cikkben megismerjük az MVC-t. Beszélünk arról, hogy mi az MVC, érintjük a történetét, feltárjuk az MVC-ben megtestesülő alapötleteket és koncepciókat, lépésről lépésre megnézzük, hogyan bonthatunk fel egy alkalmazást Model, View és Controller modulokra, írunk egy kis webalkalmazást a Spring Boot használatával, és a Spring MVC példaként való felhasználásával megtekintheti, hogyan kerülnek az adatok a Java kódból a HTML oldalakra. Az anyag megértéséhez ismernie kell a tervezési mintákat, különösen a megfigyelőt és a homlokzatot. Ismerje meg a HTTP-kéréseket és -válaszokat, ismerje meg a HTML alapjait, és ismerje meg, mik a Java annotációk. Igyál meg egy csésze kávét és nassolj, és helyezkedj el kényelmesen. Kezdjük.
Mindebből logikus következtetést vonhatunk le. Egy összetett rendszert modulokra kell osztani. Röviden írjuk le az elválasztás lépéseit.
És így jutunk el egy három modulból álló alkalmazáshoz, amelyet modellnek, nézetnek és vezérlőnek neveznek. Összefoglaljuk:
- a hálózatépítésről
- a szoftver architektúráról
- a HTTP/HTTPS-ről
- a Maven alapjairól
- a szervletekről (egy egyszerű webalkalmazás írása)
- servlet konténerekről

Az MVC története
Az MVC mögött meghúzódó ötleteket Trygve Reenskaug fogalmazta meg, miközben a Xerox PARC-nál dolgozott az 1970-es évek végén. Akkoriban a számítógéppel való munkavégzés megkövetelte a diplomát és a terjedelmes dokumentáció folyamatos tanulmányozását. A Reenskaug egy nagyon erős fejlesztőcsoporttal közösen megoldott feladat az volt, hogy egyszerűsítse a hétköznapi felhasználó számítógéppel való interakcióját. Olyan eszközöket kellett létrehozni, amelyek egyrészt rendkívül egyszerűek és érthetőek lennének, másrészt lehetővé teszik a számítógépek, összetett alkalmazások vezérlését. Reenskaug egy olyan csapaton dolgozott, amely Alan Kay vezetésével egy laptopot fejlesztett ki „minden életkorú gyermekek számára” – a Dynabookot, valamint a SmallTalk nyelvet. Ekkor határozták meg a barátságos felület fogalmait. Sok tekintetben, Reenskaug és csapata által végzett munka befolyásolta az IT szféra fejlődését. Itt van egy érdekes tény, amely nem vonatkozik közvetlenül az MVC-re, de jól szemlélteti e fejlesztések jelentőségét. Alan Kaymondott, "Amikor először eljutottam az Apple-hez, ami 84-ben volt, a Mac már megjelent, és a Newsweek megkeresett, és megkérdezte, mit gondolok a Macről. Azt mondtam: "Nos, a Mac az első személyi számítógép, amely elég jó ahhoz, hogy kritizálják. Szóval, miután 2007-ben bejelentette az iPhone-t, felhozta nekem, és átadta, és azt mondta: "Alan, ez elég jó ahhoz, hogy kritizálják?" És azt mondtam: "Steve, csináld akkora, mint egy táblagép, és uralni fogod a világot." 3 év után, 2010. január 27-én az Apple bemutatta a 9,7 hüvelykes átlójú iPadet. Más szavakkal, Steve Jobs szinte pontosan követte Alan Kay tanácsát. Reenskaug projektje 10 évig tartott. De az első publikáció az MVC-ről újabb 10 év után látott napvilágot. Martin Fowler, számos könyv és cikk szerzője a szoftverarchitektúráról, megemlíti, hogy az MVC-t a Smalltalk működő verziójával tanulta. Mivel az MVC-ről az eredeti forrásból sokáig nem volt információ, és több más okból is, ennek a fogalomnak nagyszámú különböző értelmezése jelent meg. Ennek eredményeként sokan az MVC-t tervezési mintának tekintik. Ritkábban az MVC-t összetett mintának vagy több minta kombinációjának nevezik, amelyek együttesen alkotnak összetett alkalmazásokat. De, ahogy korábban említettük, az MVC valójában elsősorban építészeti ötletek/elvek/megközelítések halmaza, amelyek különféle minták segítségével többféleképpen is megvalósíthatók... Ezután az MVC koncepcióba ágyazott főbb ötleteket tekintjük át. és több más okból is nagyszámú különböző értelmezése jelent meg ennek a fogalomnak. Ennek eredményeként sokan az MVC-t tervezési mintának tekintik. Ritkábban az MVC-t összetett mintának vagy több minta kombinációjának nevezik, amelyek együttesen alkotnak összetett alkalmazásokat. De, ahogy korábban említettük, az MVC valójában elsősorban építészeti ötletek/elvek/megközelítések halmaza, amelyek különféle minták segítségével többféleképpen is megvalósíthatók... Ezután az MVC koncepcióba ágyazott főbb ötleteket tekintjük át. és több más okból is nagyszámú különböző értelmezése jelent meg ennek a fogalomnak. Ennek eredményeként sokan az MVC-t tervezési mintának tekintik. Ritkábban az MVC-t összetett mintának vagy több minta kombinációjának nevezik, amelyek együttesen alkotnak összetett alkalmazásokat. De, ahogy korábban említettük, az MVC valójában elsősorban építészeti ötletek/elvek/megközelítések halmaza, amelyek különféle minták segítségével többféleképpen is megvalósíthatók... Ezután az MVC koncepcióba ágyazott főbb ötleteket tekintjük át.MVC: Alapötletek és alapelvek
- A VC olyan építészeti ötletek és alapelvek halmaza, amelyek felhasználói felülettel rendelkező komplex információs rendszerek felépítéséhez szükségesek
- Az MVC egy rövidítés, ami a következőt jelenti: Model-View-Controller

1. lépés: Válassza le az alkalmazás üzleti logikáját a felhasználói felületről
Az MVC alapötlete, hogy bármely felhasználói felülettel rendelkező alkalmazás 2 modulra osztható: az üzleti logika megvalósításáért felelős modulra és a felhasználói felületre. Az első modul megvalósítja az alkalmazás fő funkcióit. Ez a modul a rendszer magja, ahol az alkalmazás tartománymodelljét implementálják. Az MVC paradigmában ez a modul az M betű, azaz a modell. A második modul megvalósítja a teljes felhasználói felületet, beleértve az adatok felhasználó számára történő megjelenítésének és az alkalmazással való felhasználói interakció kezelésének logikáját. Ennek a szétválasztásnak a fő célja annak biztosítása, hogy a rendszer magja (MVC terminológiában a "modell") függetlenül fejleszthető és tesztelhető legyen. A szétválasztás után az alkalmazás architektúrája így néz ki:
2. lépés Használja a megfigyelő mintát a modell még függetlenebbé tételéhez és a felhasználói felületek szinkronizálásához
2 célunk van:- Érjen el még nagyobb függetlenséget a modell számára
- A felhasználói felületek szinkronizálása
3. lépés Válassza szét az interfészt nézetből és vezérlőből
Folytatjuk az alkalmazás modulokra osztását, de most a hierarchia alacsonyabb szintjén. Ebben a lépésben a felhasználói felület (amelyet az 1. lépésben külön modulra osztottunk) egy nézetre és egy vezérlőre van felosztva. Nehéz szigorú határvonalat húzni a nézet és a vezérlő között. Ha azt mondjuk, hogy a nézet az, amit a felhasználó lát, és a vezérlő az a mechanizmus, amely lehetővé teszi a felhasználó számára, hogy interakcióba lépjen a rendszerrel, akkor rámutathat egy ellentmondásra. A vezérlőelemek, például a weboldalon lévő gombok vagy a telefon képernyőjén lévő virtuális billentyűzet alapvetően a vezérlő részét képezik. De ugyanúgy láthatóak a felhasználó számára, mint a nézet bármely része. Amiről itt valójában beszélünk, az a funkcionális szétválasztás. A felhasználói felület fő feladata, hogy megkönnyítse a felhasználó interakcióját a rendszerrel.- kiadja és kényelmesen megjeleníti a rendszerinformációkat a felhasználó számára
- adja meg a felhasználói adatokat és parancsokat (közölje a rendszerrel)

- Az MVC paradigma elvei szerint egy rendszert modulokra kell osztani.
- A legfontosabb és független modul a modell legyen.
- A modell a rendszer magja. Lehetővé kell tenni a felhasználói felülettől függetlenül történő fejlesztését és tesztelését.
- Ennek eléréséhez a felosztás első lépésében a rendszert modellre és felhasználói felületre kell felosztanunk.
- Ezután a megfigyelő minta segítségével erősítjük a modell függetlenségét és szinkronizáljuk a felhasználói felületeket.
- A harmadik lépés a felhasználói felület felosztása vezérlőre és nézetre.
- Minden, ami a felhasználói adatok rendszerbe történő fogadásához szükséges, a vezérlőben található.
- A nézetben minden szükséges információ a felhasználóhoz való eljuttatásához.
Egy kicsit arról, hogy a nézet és a vezérlő hogyan működik együtt a modellel
A vezérlőn keresztül történő információbevitellel a felhasználó megváltoztatja a modellt. Vagy legalábbis a felhasználó módosítja a modelladatokat. Amikor a felhasználó információt kap az interfész elemeken keresztül (a nézeten keresztül), a felhasználó információt kap a modellről. Hogyan történik ez? Milyen eszközökkel lép kapcsolatba a nézet és a vezérlő a modellel? Végül is a nézet osztályai nem hívhatják meg közvetlenül a modell osztályainak metódusait adatok olvasására/írására. Ellenkező esetben nem mondhatnánk, hogy a modell független. A modell szorosan kapcsolódó osztályok halmaza, amelyekhez sem a nézetnek, sem a vezérlőnek nem szabad hozzáférnie. A modell nézethez és vezérlőhöz való csatlakoztatásához meg kell valósítanunk a homlokzati tervezési mintát. A modell homlokzata a modell és a felhasználói felület közötti réteg, amelyen keresztül a nézet kényelmesen formázott adatokat kap, a Vezérlő pedig a szükséges metódusok előhívásával módosítja az adatokat. A végén minden így néz ki:
GO TO FULL VERSION