JavaRush /Java Blog /Random-TK /Bölüm 7. MVC (Model-View-Controller) nagşy bilen tanyşlyk...

Bölüm 7. MVC (Model-View-Controller) nagşy bilen tanyşlyk

Toparda çap edildi
Bu material “Kärhananyň ösüşine giriş” seriýasynyň bir bölegidir. Öňki makalalar: Bölüm 7. MVC (Model-View-Controller) nagşy bilen tanyşlyk - 1Bu materialda sizi MVC ýaly bir zat bilen tanyşdyrarys. MVC-iň nämedigi barada gürleşeliň, döredilişiniň taryhyna degip geçeliň, MVC-e mahsus bolan esasy pikirlere we düşünjelere düşüneliň, programmany Model, View, Controller modullaryna nädip bölüp boljakdygyny we kiçijik web programmasyny ýazyň. “Bahar-boot” we mysal hökmünde “Spring-MVC” -ni ulanyp, maglumatlaryň Java kodundan html sahypalaryna nädip geçirilýändigini göreliň. Bu materiallara düşünmek üçin dizaýn nagyşlary, esasanam Synçy we fasad bilen tanyş bolmaly. HTTP haýyşlary we jogaplary bilen tanyş boluň, html esaslaryna düşüniň, Java-da bellikleriň nämedigini biliň. Oturyň, çaý taýýarlaň, desert, salat, esasy kurs we birinji kurs taýýarlaň. Biz başlaýarys.

MVC taryhy

MVC baradaky pikirler, 70-nji ýyllaryň ahyrynda Xerox PARC-da işleýärkä, Trygve Reenskaug tarapyndan düzüldi. Şol günler kompýuter bilen işlemek üçin akademiki dereje we göwrümli resminamalary yzygiderli öwrenmezden etmek mümkin däldi. Reenskaugyň gaty güýçli işläp düzüjiler topary bilen bilelikde çözen meselesi, ortaça ulanyjynyň kompýuter bilen gatnaşygyny ýönekeýleşdirmekdi. Bir tarapdan, gaty ýönekeý we düşnükli, beýleki tarapdan kompýuter we çylşyrymly programmalary dolandyrmaga mümkinçilik berýän gurallary döretmek zerur boldy. Reenskaug "ähli ýaşdaky çagalar üçin" göçme kompýuter - Dynabook, şeýle hem Alan Keýiň ýolbaşçylygynda SmallTalk dilini döreden toparda işledi. Hut şol wagt dostlukly interfeýs düşünjeleri goýuldy. Reenskaugyň topary bilen alyp barýan işleri IT pudagynyň ösüşine uly täsir etdi. MVC bilen gönüden-göni baglanyşykly däl, ýöne şol ösüşleriň ähmiýetini görkezýän gyzykly bir hakykaty hödürläliň. 2007-nji ýylda “Apple iPhone” -yň tanyşdyrylyş dabarasyndan soň Alan Keý: “Macintosh çykanda, Newsweek bu hakda näme pikir edýändigimi sorady. Diýdim: bu tankyt edilmäge mynasyp ilkinji şahsy kompýuter. Tanyşdyryş dabarasyndan soň Stiw Jobs gelip: “iPhone tankytlanmaga mynasypmy? Bäş sekiz dýuým ýasaň we dünýäni ýeňersiňiz diýdim. Üç ýyldan soň, 2010-njy ýylyň 27-nji ýanwarynda “Apple” 9,7 dýuýmlyk “iPad” -y hödürledi. Steveagny, Stiw Jobs Alan Keýiň beren maslahatyna göni manyda eýerdi. Rennskaugyň üstünde işlän taslama 10 ýyl dowam etdi. MVC hakda döredijilerden ilkinji neşir ýene 10 ýyl soň neşir edildi. Programma arhitekturasy bilen baglanyşykly birnäçe kitaplaryň we makalalaryň awtory Martin Fowler MVC-ni “SmallTalk” -yň iş wersiýasyndan öwrenendigini ýatladýar. Uzak wagtlap esasy çeşmeden MVC hakda hiç hili maglumat bolmansoň, başga-da birnäçe sebäplere görä, bu düşünjäniň köp dürli düşündirişleri peýda boldy. Netijede, köp adamlar MVC-ni dizaýn shemasy ýa-da nagşy hasaplaýarlar. MVC-de köplenç çylşyrymly programmalary durmuşa geçirmek üçin bilelikde işleýän birleşdirilen nagyş ýa-da birnäçe nagyşlaryň utgaşmasy diýilýär. Emma aslynda, öňem aýdylyşy ýaly, MVC, esasan, dürli nagyşlary ulanyp dürli usullar bilen amala aşyrylyp bilinjek binagärlik pikirleriniň / ýörelgeleriniň / çemeleşmeleriniň toplumydyr ... Soňra, MVC düşünjesinde ýerleşdirilen esasy pikirlere göz aýlamaga synanyşarys.

MVC näme: esasy pikirler we ýörelgeler

  • VC, ulanyjy interfeýsi bilen çylşyrymly maglumat ulgamlaryny gurmak üçin binagärlik pikirleriniň we ýörelgeleriniň toplumy;
  • MVC gysgaça söz bolup, Model-View-Controller diýmekdir.
Düşündiriş: MVC dizaýn nagşy däl. MVC takyk ulanyjy interfeýsi bilen çylşyrymly ulgamlary gurmak üçin binagärlik pikirleriniň we ýörelgeleriniň toplumydyr . Convenöne amatlylyk üçin, her gezek gaýtalanmazlyk üçin: “Binagärlik ideýalarynyň toplumy ...”, MVC-ni nagyş diýip atlandyrarys. Simpleönekeý bir zat bilen başlalyň. Model-View-Controller sözleriniň aňyrsynda näme gizlenýär? MVC nagyşyna eýerip, ulanyjy interfeýsi bolan ulgamlary ösdüreniňizde ulgamy üç bölege bölmeli. Bulary öz gezeginde modul ýa-da komponentler diýip atlandyryp bolar. Islän zadyňyzy aýdyň, ýöne üçe bölüň. Her bir komponentiň öz maksady bolar. Model. Birinji komponent / modul model diýilýär. Programmanyň ähli iş logikasyny öz içine alýar. Gör. Ulgamyň ikinji bölümi görnüş. Bu modul ulanyja maglumatlary görkezmek üçin jogapkärdir. Ulanyjynyň görýän zatlarynyň hemmesi görnüş arkaly döredilýär. Dolandyryjy. Bu zynjyryň üçünji baglanyşygy gözegçilik ediji. Ulanyjy hereketlerini gaýtadan işlemek üçin jogapkär kod saklaýar (ulgamdaky islendik ulanyjy hereketi kontrolda işlenýär). Model ulgamyň iň garaşsyz bölegidir. Şeýle bir garaşsyz welin, View we Controller modullary hakda hiç zat bilmez. Model şeýle bir garaşsyz welin, döredijiler “View” we “Controller” hakda hiç zat bilmezler. Görüşiň esasy maksady, Modelden ulanyjy üçin amatly görnüşde maglumat bermekdir. Görüşiň esasy çäklendirmesi, modeli hiç hili üýtgetmeli däldir. Dolandyryjynyň esasy maksady ulanyjynyň hereketlerini gaýtadan işlemekdir. Ulanyjy modele üýtgeşmeler girizýär. Has takygy, modelde saklanýan maglumatlara. Leksiýada size eýýäm görkezilen diagrammany ýene bir gezek bereliň: Bölüm 7. MVC (Model-View-Controller) nagşy bilen tanyşlyk - 2Bularyň hemmesinden doly logiki netijä gelip bileris. Çylşyrymly ulgamy modullara bölmek gerek. Şeýle aýralygy nädip gazanmalydygy barada ädimleri gysgaça suratlandyralyň.

1-nji ädim: Programmanyň iş logikasyny ulanyjy interfeýsinden aýryň

MVC-iň esasy pikiri, ulanyjy interfeýsi bolan islendik programmanyň, takmynan, 2 modula bölünip bilinmegidir: programmanyň iş logikasyny durmuşa geçirmek üçin jogapkär modul we ulanyjy interfeýsi. Birinji modul programmanyň esasy işleýşini amala aşyrar. Bu modul, programma domen modeliniň durmuşa geçirilýän ulgamynyň özeni bolar. MVC düşünjesinde bu modul M harpymyz bolar, ýagny modeli. Ikinji modul, ulanyja maglumatlary görkezmek we ulanyjynyň programma bilen özara gatnaşygy logikasyny goşmak bilen tutuş ulanyjy interfeýsini durmuşa geçirer. Bu bölünişigiň esasy maksady ulgamyň özeniniň (MVC terminologiýasynda Model) özbaşdak işlenip we synagdan geçirilip bilinmegini üpjün etmekdir. Şeýle bölünişikden soň programma arhitekturasy şeýle bolar: Bölüm 7. MVC (Model-View-Controller) nagşy bilen tanyşlyk - 3

Stepdim 2. Synçy nagyşyny ulanyp, modeliň has uly garaşsyzlygyna, şeýle hem ulanyjy interfeýsleriniň sinhronlaşmagyna ýetiň

Bu ýerde 2 maksat edinýäris:
  1. Modeliň has uly garaşsyzlygyny gazanmak.
  2. Ulanyjy interfeýslerini sinhronlaň.
Aşakdaky mysal, ulanyjy interfeýslerini sinhronlamak manysyna düşünmäge kömek eder. Onlaýn film biletini satyn alýarys we teatrda oturgyçlaryň sanyny görýäris diýeliň. Başga biri biziň bilen bir wagtda kino biletini satyn alyp biler. Bu biri öňümizde bilet satyn alsa, sessiýamyz üçin elýeterli oturgyçlaryň sanynyň azalandygyny görmek isleýäris. Indi muny programmanyň içinde nädip durmuşa geçirip boljakdygy barada pikir edeliň. Ulgam ýadrosy (modelimiz) we interfeýs (satyn alýan web sahypamyz) bar diýip pikir edeliň. Saýtda 2 ulanyjy bir wagtyň özünde oturgyç saýlaýar. Ilkinji ulanyjy bilet satyn aldy. Ikinji ulanyjy bu maglumatlary sahypada görkezmeli. Bu nähili bolmaly? Ulgam ýadrosyndan interfeýsi täzelesek, ýadrosymyz, modelimiz interfeýse bagly bolar. Model döredilende we synagdan geçirilende interfeýsi täzelemegiň dürli usullaryny ýatda saklamaly bolarsyňyz. Muňa ýetmek üçin Synçy nusgasyny durmuşa geçirmeli. Onuň kömegi bilen model ähli abonentlere üýtgeşmeler barada habar iberýär. Şeýle abonent bolmak bilen interfeýs habarnamany we täzelenmäni alar. Synçy nagşy, bir tarapdan, modele interfeýsde (görüniş we gözegçilik ediji) onda üýtgeşmeleriň bolandygyny habar bermäge, beýleki tarapdan bolsa, aslynda olar hakda hiç zady "bilmäge" we şeýlelik bilen garaşsyz bolmaga mümkinçilik berýär. Beýleki tarapdan, bu ulanyjy interfeýslerini sinhronlamaga mümkinçilik berer.

Stepdim 3. Interfeýsi View we Controller-e bölmek

Programmany modullara bölmegi dowam etdirýäris, ýöne iýerarhiýanyň has pes derejesinde. Bu ädimde ulanyjy interfeýsi (1-nji ädimde aýratyn modula bölünipdi) görnüşe we gözegçä bölünýär. Görnüş bilen kontrolleýjiniň arasynda berk çyzyk çekmek kyn. Görnüşi ulanyjynyň görýän zady, gözegçilik ediji bolsa ulanyjynyň ulgam bilen täsirleşip bilýän mehanizmi diýsek, käbir gapma-garşylyk bar. Web sahypasyndaky düwmeler ýa-da telefon ekranyndaky wirtual klawiatura ýaly dolandyryşlar, esasan, gözegçilik edijiniň bir bölegidir. Theyöne ulanyja görnüşiň islendik bölegi ýaly görünýär. Bu ýerde funksional bölünişik hakda has köp gürleşýäris. Ulanyjy interfeýsiniň esasy wezipesi, ulanyjynyň ulgam bilen gatnaşygyny üpjün etmekdir. Bu interfeýsiň diňe 2 funksiýasynyň bardygyny aňladýar:
  • ulanyja ulgam hakda maglumatlary görkezmek we amatly görkezmek;
  • ulanyja maglumatlary we buýruklary ulgama giriziň (sistema geçiriň);
Bu funksiýalar interfeýsiň modullara nädip bölünmelidigini kesgitleýär. Netijede ulgam arhitekturasy şeýle görünýär: Bölüm 7. MVC (Model-View-Controller) nagşy bilen tanyşlyk - 4Şeýlelik bilen, Model, View we Controller atly üç modulyň programmasy bar. Jemläp aýtsak:
  1. MVC ýörelgelerine eýerip, ulgam modullara bölünmeli.
  2. Iň möhüm we garaşsyz modul model bolmaly.
  3. Model ulgamyň özenidir. Ony interfeýsden garaşsyz ösdürmek we synagdan geçirmek ukyby gerek.
  4. Munuň üçin ulgam bölünişiginiň ilkinji ädiminde ony model we interfeýslere bölmeli.
  5. Ondan soň, Synçy nusgasyny ulanyp, modeli garaşsyzlykda güýçlendirýäris we ulanyjy interfeýsleriniň sinhronlaşmagyny alýarys.
  6. Üçünji ädim, interfeýsi dolandyryjy we görnüşe bölmek.
  7. Ulanyjydan sistema maglumat girizmek üçin talap edilýän zatlaryň hemmesi kontrolda.
  8. Ulgamdan ulanyja maglumat berýän zatlaryň hemmesi göz öňünde tutulýar.
Ara alyp maslahatlaşmak üçin ýene bir möhüm zat galdy we kakao içip bilersiňiz.

Görkeziş we Dolandyryjy bilen Modeliň arasyndaky baglanyşyk hakda azajyk

Ulanyjy gözegçiniň üsti bilen maglumat girizeninde, modele üýtgeşmeler girizýär. Iň bolmanda, ulanyjy model maglumatlaryna üýtgeşmeler girizýär. Ulanyjy interfeýs elementleriniň üsti bilen (Görkeziş arkaly) maglumat alanda, ulanyjy model maglumatlary barada maglumat alýar. Bu nähili bolup geçýär? View we Controller model bilen nähili täsirleşýär? Galyberse-de, “View” synplarynyň maglumatlary okamak / ýazmak üçin “Model” synplarynyň usullaryny gönüden-göni ulanmagy bolup bilmez, ýogsam Modeliň garaşsyzlygy barada sorag bolup bilmez. Model, biri-birine berk bagly bolan synplar toplumyny aňladýar, bu görnüşde, ne View, ne-de Dolandyryjy girip bilmez. Modeli “View” we “Controller” bilen birleşdirmek üçin “Facade” dizaýn nusgasyny durmuşa geçirmek zerurdyr. Model fasad, Model bilen interfeýsiň arasynda gaty gatlak bolar, onuň üsti bilen View amatly formatda maglumatlary alar we Dolandyryjy zerur fasad usullaryny çagyryp maglumatlary üýtgeder. Sxematiki taýdan ahyrynda hemme zat şeýle bolar: Bölüm 7. MVC (Model-View-Controller) nagşy bilen tanyşlyk - 6

MVC: peýdasy näme?

MVC ýörelgelerine eýermegiň esasy maksady, programmanyň iş logikasyny (modelini) wizuallaşdyrmakdan (görnüşden) aýyrmakdyr. Bu aýralyk, koduň gaýtadan ulanylmagyny artdyrar. MVC ulanmagyň artykmaçlyklary, ulanyjynyň şol bir maglumatlary dürli görnüşlerde üpjün etmegi zerur bolan ýagdaýlarda has aýdyň görünýär. Mysal üçin, tablisa, grafika ýa-da diagramma görnüşinde (dürli görnüşleri ulanyp). Şol bir wagtyň özünde, pikirleriň ýerine ýetirilmegine täsir etmezden, ulanyjynyň hereketlerine reaksiýalary üýtgedip bilersiňiz (düwmä basmak, maglumatlary girizmek). MVC ýörelgelerine eýerseňiz, programmalaryň ýazylyşyny ýönekeýleşdirip bilersiňiz, koduň okalmagyny ýokarlandyryp bilersiňiz we geljekde ulgamy giňeltmegi we goldamagy aňsatlaşdyryp bilersiňiz. “Kärhananyň ösüşine giriş” seriýasynyň soňky materialynda, mysal hökmünde Bahar-MVC ulanyp, MVC-iň durmuşa geçirilişine serederis. Bölüm 8. springaz paslynda kiçi programma ýazmak
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION