JavaRush /Blog Jawa /Random-JV /Part 7. Pambuka kanggo pola MVC (Model-View-Controller).

Part 7. Pambuka kanggo pola MVC (Model-View-Controller).

Diterbitake ing grup
Materi iki minangka bagéan saka seri "Introduction to Enterprise Development". Artikel sadurunge: Part 7. Pambuka pola MVC (Model-View-Controller) - 1Ing materi iki kita bakal introduce sampeyan bab kayata MVC. Ayo dadi pirembagan bab apa MVC iku, tutul ing sajarah nggawe, ngerti gagasan utama lan konsep gawan ing MVC, nimbang langkah dening langkah carane break aplikasi menyang Model, View, modul Controller, lan uga nulis aplikasi web cilik ing Spring-Boot, lan Nggunakake Spring-MVC minangka conto, ayo ndeleng carane data ditransfer saka kode Jawa menyang kaca html. Kanggo mangerteni materi iki, sampeyan kudu ngerti pola desain, utamane Observer lan Facade. Sinau karo panjalukan lan tanggapan HTTP, ngerti dhasar html, ngerti apa anotasi ing Jawa. Lungguhan, gawe teh, nyiyapake panganan cuci mulut, salad, sajian utama lan sajian pisanan. Kita miwiti.

Sejarah saka MVC

Gagasan kanggo MVC dirumusake dening Trygve Reenskaug nalika makarya ing Xerox PARC ing pungkasan taun 70-an. Ing dina iku, kanggo bisa karo komputer iku mokal kanggo nindakake tanpa gelar akademisi lan pancet sinau dokumentasi voluminous. Masalah sing ditanggulangi Reenskaug bebarengan karo klompok pangembang sing kuwat yaiku kanggo nyederhanakake interaksi pangguna rata-rata karo komputer. Sampeyan perlu kanggo nggawe alat sing, ing tangan siji, bakal arang banget prasaja lan dingerteni, lan ing liyane, bakal nggawe iku bisa kanggo ngatur komputer lan aplikasi Komplek. Reenskaug kerja ing tim sing ngembangake komputer portabel "kanggo bocah-bocah kabeh umur" - Dynabook, uga basa SmallTalk ing pimpinan Alan Kay. Iku banjur ana sing konsep antarmuka loropaken padha glethakaken mudhun. Karya Reenskaug karo timnya akeh pengaruhe ing perkembangan bidang IT. Ayo kita nampilake kasunyatan menarik sing ora ana hubungane langsung karo MVC, nanging nggambarake pentinge perkembangan kasebut. Ing taun 2007, sawise presentasi Apple iPhone, Alan Kay ujar: "Nalika Macintosh metu, Newsweek takon apa sing dakkarepake. Aku ngandika: iki komputer pribadi pisanan pantes kritik. Sawise presentasi, Steve Jobs teka lan takon: apa iPhone pantes dikritik? Lan Aku ngandika, nggawe limang karo wolung inci lan sampeyan bakal nelukake donya. Telung taun sabanjure, tanggal 27 Januari 2010, Apple ngenalake iPad 9,7 inci. Yaiku, Steve Jobs ngetutake saran Alan Kay meh sacara harfiah. Proyek sing digarap Rennskaug suwene 10 taun. Lan publikasi pisanan babagan MVC saka pangripta diterbitake 10 taun sabanjure. Martin Fowler, penulis sawetara buku lan artikel babagan arsitektur piranti lunak, nyebataken bilih piyambakipun sinau MVC saka versi SmallTalk. Wiwit ora ana informasi babagan MVC saka sumber utama kanggo wektu sing suwe, uga kanggo sawetara alasan liyane, akeh macem-macem interpretasi konsep iki muncul. Akibaté, akeh wong nganggep MVC minangka skema utawa pola desain. Kurang umum, MVC diarani pola komposit utawa kombinasi sawetara pola sing bisa bebarengan kanggo ngleksanakake aplikasi rumit. Nanging nyatane, kaya sing wis dingerteni sadurunge, MVC utamane minangka set ide / prinsip / pendekatan arsitektur sing bisa diimplementasikake kanthi macem-macem cara nggunakake macem-macem pola ... Sabanjure, kita bakal nyoba ndeleng gagasan utama sing ana ing konsep MVC.

Apa MVC: gagasan dhasar lan prinsip

  • VC minangka sakumpulan gagasan lan prinsip arsitektur kanggo mbangun sistem informasi kompleks kanthi antarmuka panganggo;
  • MVC minangka singkatan saka Model-View-Controller.
Penafian: MVC dudu pola desain. MVC sabenere pesawat saka gagasan arsitektur lan prinsip kanggo mbangun sistem Komplek karo antarmuka panganggo. Nanging kanggo penak, supaya ora mbaleni saben wektu: "Sakumpulan gagasan arsitektur ...", kita bakal nelpon pola MVC. Ayo dadi miwiti karo soko prasaja. Apa sing didhelikake ing tembung Model-View-Controller? Nalika ngembangake sistem kanthi antarmuka panganggo, miturut pola MVC, sampeyan kudu dibagi sistem dadi telung komponen. Iki, ing siji, bisa disebut modul utawa komponen. Ngomong apa sing dikarepake, nanging dibagi dadi telu. Saben komponen bakal duwe tujuan dhewe. Model. Komponen/modul pisanan yaiku model sing diarani. Isine kabeh logika bisnis aplikasi kasebut. Ndeleng. Bagian kapindho sistem yaiku tampilan. Modul iki tanggung jawab kanggo nampilake data menyang pangguna. Kabeh sing dideleng pangguna digawe dening tampilan. Pengontrol. Link katelu ing chain iki controller. Iki nyimpen kode sing tanggung jawab kanggo ngolah tumindak pangguna (kabeh tumindak pangguna ing sistem diproses ing pengontrol). Model minangka bagéan paling independen saka sistem. Dadi independen supaya ora ngerti apa-apa babagan modul View lan Controller. Model kasebut independen banget, saengga para pangembang bisa uga ora ngerti babagan View lan Controller. Tujuan utama Tampilan yaiku nyedhiyakake informasi saka Model ing format sing ramah pangguna. Watesan utama View yaiku supaya ora ngganti model kanthi cara apa wae. Tujuan utama Controller yaiku kanggo ngolah tumindak pangguna. Iku liwat Controller sing pangguna nggawe owahan kanggo model. Luwih tepate, menyang data sing disimpen ing model. Ayo menehi maneh diagram sing wis ditampilake ing kuliah: Part 7. Pambuka pola MVC (Model-View-Controller) - 2Saka kabeh iki, kita bisa nggawe kesimpulan sing logis. Sistem kompleks kudu dipérang dadi modul. Ayo kita njlèntrèhaké kanthi sedhela langkah-langkah kanggo nggayuh pemisahan kasebut.

Langkah 1: Pisahake logika bisnis aplikasi saka antarmuka panganggo

Gagasan utama MVC yaiku manawa aplikasi apa wae sing duwe antarmuka pangguna bisa, kanggo perkiraan pisanan, dipérang dadi 2 modul: modul sing tanggung jawab kanggo ngetrapake logika bisnis aplikasi kasebut, lan antarmuka pangguna. Modul pisanan bakal ngetrapake fungsi utama aplikasi kasebut. Modul iki bakal dadi inti saka sistem, ing ngendi model domain aplikasi dileksanakake. Ing konsep MVC, modul iki bakal dadi huruf M, yaiku. model. Modul kapindho bakal ngetrapake kabeh antarmuka pangguna, kalebu nampilake data menyang pangguna lan logika interaksi pangguna karo aplikasi kasebut. Tujuan utama pemisahan iki kanggo mesthekake yen inti saka sistem (Model ing terminologi MVC) bisa independen dikembangaké lan dites. Arsitektur aplikasi sawise divisi kasebut bakal katon kaya iki: Part 7. Pambuka pola MVC (Model-View-Controller) - 3

Langkah 2. Nggunakake pola Observer, entuk kamardikan model sing luwih gedhe, uga sinkronisasi antarmuka pangguna

Ing kene kita nggayuh 2 tujuan:
  1. Entuk kamardikan model sing luwih gedhe.
  2. Sinkronisasi antarmuka panganggo.
Conto ing ngisor iki bakal mbantu sampeyan ngerti apa tegese nyinkronake antarmuka pangguna. Ayo kita tuku tiket film online lan ndeleng jumlah kursi sing kasedhiya ing bioskop. Wong liya bisa tuku tiket film bebarengan karo kita. Yen ana wong sing tuku tiket sadurunge kita, kita pengin ndeleng manawa jumlah kursi sing kasedhiya kanggo sesi kita wis suda. Saiki ayo dipikirake kepiye carane bisa ditindakake ing program kasebut. Ayo kita nganggep kita duwe inti sistem (model kita) lan antarmuka (kaca web sing kita tuku). Ing situs, 2 pangguna bebarengan milih kursi. Pangguna pisanan tuku tiket. Pangguna kapindho kudu nampilake informasi kasebut ing kaca kasebut. Kepiye carane iki kudu kedadeyan? Yen kita nganyari antarmuka saka kernel sistem, kernel kita, model kita, bakal gumantung ing antarmuka. Nalika ngembangake lan nguji model, sampeyan kudu ngelingi macem-macem cara kanggo nganyari antarmuka. Kanggo entuk iki, sampeyan kudu ngetrapake pola Observer. Kanthi bantuan, model ngirim kabar babagan owah-owahan menyang kabeh pelanggan. Antarmuka, dadi pelanggan kaya ngono, bakal nampa kabar lan nganyari. Pola Observer ngidini model, ing tangan siji, kanggo ngandhani antarmuka (tampilan lan controller) sing owah-owahan wis kedaden ing, lan ing tangan liyane, bener "ngerti" apa-apa bab mau, lan kanthi mangkono tetep sawijining. Ing sisih liya, iki bakal ngidini antarmuka pangguna disinkronake.

Langkah 3. Dibagi antarmuka menyang View lan Controller

Kita terus dibagi aplikasi menyang modul, nanging ing tingkat ngisor saka hirarki. Ing langkah iki, antarmuka panganggo (sing dipisahake dadi modul kapisah ing langkah 1) dipérang dadi tampilan lan pengontrol. Iku angel kanggo tarik garis ketat antarane tampilan lan controller. Yen kita ngomong yen tampilan minangka pangguna sing ndeleng, lan pengontrol minangka mekanisme sing bisa digunakake kanggo sesambungan karo sistem kasebut, ana sawetara kontradiksi. Kontrol, kayata tombol ing kaca web utawa keyboard virtual ing layar telpon, minangka bagean saka pengontrol. Nanging padha katon kanggo pangguna minangka bagean saka tampilan. Ing kene kita ngomong babagan divisi fungsional. Tugas utama antarmuka pangguna yaiku njamin interaksi pangguna karo sistem. Iki tegese antarmuka mung nduweni 2 fungsi:
  • nampilake lan kanthi gampang nampilake informasi babagan sistem menyang pangguna;
  • ketik data pangguna lan printah menyang sistem (ngirim menyang sistem);
Fungsi kasebut nemtokake cara antarmuka kudu dipérang dadi modul. Akibaté, arsitektur sistem katon kaya iki: Part 7. Pambuka pola MVC (Model-View-Controller) - 4Dadi, kita duwe aplikasi saka telung modul disebut Model, View lan Controller. Kanggo ngringkes:
  1. Miturut prinsip MVC, sistem kasebut kudu dipérang dadi modul.
  2. Modul sing paling penting lan mandiri kudu dadi model.
  3. Model minangka inti saka sistem. Sampeyan mbutuhake kemampuan kanggo ngembangake lan nguji kanthi bebas saka antarmuka.
  4. Kanggo nindakake iki, ing langkah pisanan pemisahan sistem, sampeyan kudu dibagi dadi model lan antarmuka.
  5. Sabanjure, nggunakake pola Observer, kita nguatake model ing kamardikan lan entuk sinkronisasi antarmuka pangguna.
  6. Langkah katelu kanggo dibagi antarmuka menyang controller lan tampilan.
  7. Kabeh sing dibutuhake kanggo ngetik informasi saka pangguna menyang sistem yaiku menyang pengontrol.
  8. Kabeh sing ngasilake informasi saka sistem menyang pangguna katon.
Ana siji liyane sing penting kanggo dirembug lan sampeyan bisa ngombe coklat.

A sethitik babagan hubungan antarane View lan Controller lan Model

Nalika pangguna ngetik informasi liwat pengontrol, dheweke nggawe owah-owahan ing model kasebut. Paling ora pangguna nggawe owah-owahan ing data model. Nalika pangguna nampa informasi liwat unsur antarmuka (liwat View), pangguna nampa informasi bab data model. Kepiye kedadeyan iki? Kepiye Tampilan lan Pengontrol sesambungan karo model kasebut? Sawise kabeh, iku ora bisa sing View kelas langsung nggunakake cara saka kelas Model kanggo maca / nulis data, digunakake ora ana pitakonan saka sembarang kamardikan saka Model. Model nggantosi pesawat tightly interconnected saka kelas sing, ing cara sing apik, ora View utawa Controller kudu akses. Kanggo nyambungake Model karo View lan Controller, perlu kanggo ngleksanakake pola desain Facade. Fasad model bakal dadi lapisan banget ing antarane Model lan antarmuka, ing ngendi Tampilan nampa data ing format sing trep, lan Controller ngganti data kanthi nelpon metode fasad sing dibutuhake. Secara skematis, ing pungkasan, kabeh bakal katon kaya iki: Part 7. Pambuka pola MVC (Model-View-Controller) - 6

MVC: apa keuntungane?

Tujuan utama ngetutake prinsip MVC yaiku misahake implementasi logika bisnis (model) aplikasi saka visualisasi (tampilan). Pemisahan iki bakal nambah panggunaan kode maneh. Keuntungan saka nggunakake MVC paling ketok ing kasus ngendi pangguna perlu kanggo nyedhiyani data padha ing wangun beda. Contone, ing wangun tabel, grafik utawa grafik (nganggo macem-macem jinis). Ing wektu sing padha, tanpa mengaruhi implementasine tampilan, sampeyan bisa ngganti reaksi menyang tumindak pangguna (ngeklik tombol, ngetik data). Yen sampeyan tindakake prinsip MVC, sampeyan bisa menakake nulis program, nambah readability saka kode, lan wis luwih gampang kanggo nggedhekake lan njaga sistem ing mangsa. Ing materi pungkasan saka seri "Introduction to Enterprise Development", kita bakal katon ing implementasine saka MVC nggunakake Spring-MVC minangka conto. Part 8. Nulis aplikasi cilik ing spring-boot
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION