JavaRush /Java blogi /Random-UZ /7-qism. MVC (Model-View-Controller) naqshiga kirish

7-qism. MVC (Model-View-Controller) naqshiga kirish

Guruhda nashr etilgan
Ushbu material "Korxonani rivojlantirishga kirish" seriyasining bir qismidir. Oldingi maqolalar: 7-qism. MVC (Model-View-Controller) naqshiga kirish - 1Ushbu materialda biz sizni MVC kabi narsa bilan tanishtiramiz. Keling, MVC nima ekanligi haqida gapiraylik, uning yaratilish tarixiga to'xtalib o'tamiz, MVC-ga xos bo'lgan asosiy g'oyalar va tushunchalarni tushunamiz, dasturni Model, View, Controller modullariga qanday ajratishni bosqichma-bosqich ko'rib chiqamiz, shuningdek, kichik veb-ilovani yozamiz. Spring-Boot va Spring-MVC-dan misol sifatida foydalanib, ma'lumotlar Java kodidan html sahifalariga qanday uzatilishini ko'rib chiqamiz. Ushbu materialni tushunish uchun siz dizayn naqshlari, ayniqsa Observer va Fasad bilan tanishishingiz kerak. HTTP so'rovlari va javoblari bilan tanishing, html asoslarini tushuning, Java-da qanday izohlar borligini biling. Orqaga o'tiring, choy tayyorlang, shirinlik, salat, asosiy taom va birinchi taom tayyorlang. Biz boshlaymiz.

MVC tarixi

MVC g'oyalari Trygve Reenskaug tomonidan 70-yillarning oxirida Xerox PARCda ishlaganda ishlab chiqilgan. O'sha kunlarda kompyuter bilan ishlashni ilmiy darajasiz va katta hajmli hujjatlarni doimiy o'rganmasdan qilish mumkin emas edi. Reenskaug juda kuchli ishlab chiquvchilar guruhi bilan birgalikda hal qilgan muammo oddiy foydalanuvchining kompyuter bilan o'zaro aloqasini soddalashtirish edi. Bir tomondan, nihoyatda sodda va tushunarli, ikkinchi tomondan, kompyuter va murakkab dasturlarni boshqarish imkonini beradigan vositalarni yaratish kerak edi. Reenskaug "barcha yoshdagi bolalar uchun" portativ kompyuter - Dynabook, shuningdek, Alan Kay boshchiligida SmallTalk tilini ishlab chiqqan jamoada ishlagan. O'sha paytda va u erda do'stona interfeys tushunchalari paydo bo'ldi. Reenskaugning o'z jamoasi bilan ishlashi IT sohasining rivojlanishiga katta ta'sir ko'rsatdi. Keling, MVC bilan bevosita bog'liq bo'lmagan, ammo bu ishlanmalarning ahamiyatini ko'rsatadigan qiziqarli faktni keltiramiz. 2007-yilda, Apple iPhone taqdimotidan so‘ng Alan Kay shunday dedi: “Makintosh paydo bo‘lganida, Newsweek u haqida nima deb o‘ylaganimni so‘radi. Men aytdim: bu tanqidga loyiq birinchi shaxsiy kompyuter. Taqdimotdan so'ng Stiv Djobs kelib so'radi: iPhone tanqidga loyiqmi? Men aytdimki, uni beshga sakkiz dyuymga aylantiring va siz dunyoni zabt etasiz. Uch yildan so‘ng, 2010-yil 27-yanvarda Apple 9,7 dyuymli iPad’ni taqdim etdi. Ya'ni, Stiv Jobs Alan Kayning maslahatiga deyarli tom ma'noda amal qilgan. Rennskaug ishlagan loyiha 10 yil davom etdi. Va MVC haqida uning yaratuvchilari tomonidan birinchi nashr yana 10 yildan keyin nashr etildi. Dasturiy ta'minot arxitekturasi bo'yicha bir qator kitoblar va maqolalar muallifi Martin Fauler MVC-ni SmallTalkning ishchi versiyasidan o'rganganini ta'kidlaydi. Uzoq vaqt davomida birlamchi manbadan MVC haqida ma'lumot yo'qligi sababli, shuningdek, bir qator boshqa sabablarga ko'ra, ushbu kontseptsiyaning juda ko'p turli xil talqinlari paydo bo'ldi. Natijada, ko'p odamlar MVC ni dizayn sxemasi yoki naqsh deb bilishadi. Kamroq, MVC kompozit naqsh yoki murakkab ilovalarni amalga oshirish uchun birgalikda ishlaydigan bir nechta naqshlarning kombinatsiyasi deb ataladi. Lekin aslida, avval aytib o'tilganidek, MVC, birinchi navbatda, turli naqshlar yordamida turli yo'llar bilan amalga oshirilishi mumkin bo'lgan arxitektura g'oyalari/tamoyillari/yondashuvlari to'plamidir... Keyinchalik, MVC kontseptsiyasiga kiritilgan asosiy g'oyalarni ko'rib chiqishga harakat qilamiz.

MVC nima: asosiy g'oyalar va tamoyillar

  • VC - foydalanuvchi interfeysi bilan murakkab axborot tizimlarini qurish uchun me'moriy g'oyalar va tamoyillar to'plami;
  • MVC qisqartma bo'lib, Model-View-Controller degan ma'noni anglatadi.
Rad etish: MVC dizayn namunasi emas. MVC aniq foydalanuvchi interfeysi bilan murakkab tizimlarni qurish uchun arxitektura g'oyalari va tamoyillari to'plamidir . Ammo qulaylik uchun, har safar takrorlanmaslik uchun: "Arxitektura g'oyalari to'plami ...", biz MVC ni naqsh deb ataymiz. Keling, oddiy narsadan boshlaylik. Model-View-Controller so'zlari orqasida nima yashiringan? MVC naqshiga rioya qilgan holda foydalanuvchi interfeysi bilan tizimlarni ishlab chiqishda siz tizimni uchta komponentga bo'lishingiz kerak. Bularni, o'z navbatida, modullar yoki komponentlar deb atash mumkin. Istaganingizni ayting, lekin uchga bo'ling. Har bir komponent o'z maqsadiga ega bo'ladi. Model. Birinchi komponent/modul model deb ataladi. U ilovaning barcha biznes mantiqini o'z ichiga oladi. Ko'rinish. Tizimning ikkinchi qismi ko'rinishdir. Ushbu modul foydalanuvchiga ma'lumotlarni ko'rsatish uchun javobgardir. Foydalanuvchi ko'rgan hamma narsa ko'rinish tomonidan yaratilgan. Nazoratchi. Ushbu zanjirning uchinchi bo'g'ini boshqaruvchidir. U foydalanuvchi harakatlarini qayta ishlash uchun javobgar bo'lgan kodni saqlaydi (tizimdagi har qanday foydalanuvchi harakati kontrollerda qayta ishlanadi). Model tizimning eng mustaqil qismidir. Shu qadar mustaqilki, u View va Controller modullari haqida hech narsa bilmasligi kerak. Model shu qadar mustaqilki, uni ishlab chiquvchilar View va Controller haqida deyarli hech narsa bilishmaydi. Ko'rinishning asosiy maqsadi Modeldagi ma'lumotlarni foydalanuvchilarga qulay formatda taqdim etishdir. Ko'rinishning asosiy cheklovi shundaki, u modelni hech qanday tarzda o'zgartirmasligi kerak. Controllerning asosiy maqsadi foydalanuvchi harakatlarini qayta ishlashdir. Aynan Controller orqali foydalanuvchi modelga o'zgartirishlar kiritadi. Aniqroq aytganda, modelda saqlanadigan ma'lumotlarga. Keling, sizga ma'ruzada ko'rsatilgan sxemani yana bir bor keltiramiz: 7-qism. MVC (Model-View-Controller) naqshiga kirish - 2Bularning barchasidan biz to'liq mantiqiy xulosa chiqarishimiz mumkin. Murakkab tizimni modullarga bo'lish kerak. Keling, bunday ajralishga qanday erishish bo'yicha qadamlarni qisqacha tasvirlab beraylik.

1-qadam: Ilovaning biznes mantiqini foydalanuvchi interfeysidan ajrating

MVC ning asosiy g'oyasi shundan iboratki, foydalanuvchi interfeysiga ega bo'lgan har qanday dasturni birinchi bo'lib 2 modulga bo'lish mumkin: ilovaning biznes mantiqini amalga oshirish uchun mas'ul bo'lgan modul va foydalanuvchi interfeysi. Birinchi modul ilovaning asosiy funksiyalarini amalga oshiradi. Ushbu modul tizimning yadrosi bo'lib, unda dastur domeni modeli amalga oshiriladi. MVC kontseptsiyasida ushbu modul bizning M harfimiz bo'ladi, ya'ni. model. Ikkinchi modul butun foydalanuvchi interfeysini amalga oshiradi, shu jumladan foydalanuvchiga ma'lumotlarni ko'rsatish va foydalanuvchining dastur bilan o'zaro aloqasi mantiqidir. Ushbu ajratishning asosiy maqsadi tizimning yadrosini (MVC terminologiyasidagi model) mustaqil ravishda ishlab chiqish va sinovdan o'tkazishni ta'minlashdir. Bunday bo'linishdan keyin dastur arxitekturasi quyidagicha ko'rinadi: 7-qism. MVC (Model-View-Controller) naqshiga kirish - 3

2-qadam. Observer naqshidan foydalanib, modelning yanada ko'proq mustaqilligiga erishing, shuningdek, foydalanuvchi interfeyslarini sinxronlashtiring

Bu erda biz 2 ta maqsadni ko'zlaymiz:
  1. Modelning yanada katta mustaqilligiga erishing.
  2. Foydalanuvchi interfeyslarini sinxronlashtiring.
Quyidagi misol foydalanuvchi interfeyslarini sinxronlash nimani anglatishini tushunishga yordam beradi. Aytaylik, kino chiptasini onlayn sotib olamiz va teatrdagi mavjud o'rindiqlar sonini ko'ramiz. Biz bilan bir vaqtda yana kimdir kino chiptasini sotib olishi mumkin. Agar kimdir bizdan oldin chipta sotib olsa, bizning sessiyamiz uchun mavjud o'rindiqlar soni kamayganini ko'rishni xohlaymiz. Endi buni dastur ichida qanday amalga oshirish mumkinligi haqida o'ylab ko'raylik. Faraz qilaylik, bizda tizim yadrosi (modelimiz) va interfeys (biz xarid qiladigan veb-sahifa) bor. Saytda bir vaqtning o'zida 2 foydalanuvchi o'rindiqni tanlaydi. Birinchi foydalanuvchi chipta sotib oldi. Ikkinchi foydalanuvchi ushbu ma'lumotni sahifada ko'rsatishi kerak. Bu qanday sodir bo'lishi kerak? Agar biz interfeysni tizim yadrosidan yangilasak, yadromiz, modelimiz interfeysga bog'liq bo'ladi. Modelni ishlab chiqish va sinovdan o'tkazishda siz interfeysni yangilashning turli usullarini yodda tutishingiz kerak bo'ladi. Bunga erishish uchun Observer naqshini amalga oshirishingiz kerak. Uning yordami bilan model barcha abonentlarga o'zgarishlar haqida bildirishnomalarni yuboradi. Bunday abonent bo'lgan interfeys xabarnoma va yangilanish oladi. Observer modeli, bir tomondan, modelga interfeysga (ko'rinish va boshqaruvchi) unda sodir bo'lgan o'zgarishlar haqida ma'lumot berishga, ikkinchi tomondan, ular haqida haqiqatda hech narsa "bilmasligiga" imkon beradi va shu bilan mustaqil bo'lib qoladi. Boshqa tomondan, bu foydalanuvchi interfeyslarini sinxronlashtirishga imkon beradi.

Qadam 3. Interfeysni View va Controllerga bo'lish

Biz dasturni modullarga bo'lishda davom etamiz, lekin ierarxiyaning past darajasida. Ushbu bosqichda foydalanuvchi interfeysi (1-bosqichda alohida modulga ajratilgan) ko'rinish va boshqaruvchiga bo'linadi. Ko'rinish va boshqaruvchi o'rtasida qat'iy chiziq chizish qiyin. Agar ko'rinish foydalanuvchi ko'rgan narsa, boshqaruvchi esa foydalanuvchi tizim bilan o'zaro aloqada bo'lishi mumkin bo'lgan mexanizm desak, qandaydir qarama-qarshilik mavjud. Veb-sahifadagi tugmalar yoki telefon ekranidagi virtual klaviatura kabi boshqaruv elementlari asosan boshqaruvchining bir qismidir. Lekin ular foydalanuvchiga ko'rinishning har qanday qismi kabi ko'rinadi. Bu erda biz funktsional bo'linish haqida ko'proq gaplashamiz. Foydalanuvchi interfeysining asosiy vazifasi foydalanuvchining tizim bilan o'zaro aloqasini ta'minlashdan iborat. Bu shuni anglatadiki, interfeys faqat ikkita funktsiyaga ega:
  • foydalanuvchiga tizim haqidagi ma'lumotlarni ko'rsatish va qulay tarzda ko'rsatish;
  • foydalanuvchi ma'lumotlari va buyruqlarni tizimga kiritish (ularni tizimga uzatish);
Ushbu funktsiyalar interfeysni modullarga qanday ajratish kerakligini aniqlaydi. Natijada, tizim arxitekturasi quyidagicha ko'rinadi: 7-qism. MVC (Model-View-Controller) naqshiga kirish - 4Demak, bizda Model, Ko'rinish va Controller deb nomlangan uchta moduldan iborat dastur mavjud. Xulosa qilish uchun:
  1. MVC tamoyillariga rioya qilgan holda tizimni modullarga bo'lish kerak.
  2. Eng muhim va mustaqil modul model bo'lishi kerak.
  3. Model tizimning asosiy qismidir. Siz uni interfeysdan mustaqil ravishda ishlab chiqish va sinab ko'rish qobiliyatiga ega bo'lishingiz kerak.
  4. Buning uchun tizimni ajratishning birinchi bosqichida siz uni model va interfeysga bo'lishingiz kerak.
  5. Keyinchalik, Observer naqshidan foydalanib, biz modelni mustaqilligida mustahkamlaymiz va foydalanuvchi interfeyslarining sinxronizatsiyasini olamiz.
  6. Uchinchi qadam - interfeysni kontroller va ko'rinishga bo'lish.
  7. Foydalanuvchidan tizimga ma'lumot kiritish uchun zarur bo'lgan barcha narsa kontrollerga kiradi.
  8. Tizimdan foydalanuvchiga ma'lumot chiqaradigan hamma narsa ko'rinadi.
Muhokama qilish uchun yana bir muhim narsa bor va siz kakao ichishingiz mumkin.

Ko'rinish va Controller va Model o'rtasidagi munosabatlar haqida bir oz

Foydalanuvchi boshqaruvchi orqali ma'lumot kiritganda, u shu bilan modelga o'zgartirishlar kiritadi. Hech bo'lmaganda foydalanuvchi model ma'lumotlariga o'zgartirishlar kiritadi. Foydalanuvchi interfeys elementlari orqali (View orqali) ma'lumot olganida, foydalanuvchi model ma'lumotlari haqida ma'lumot oladi. Bu qanday sodir bo'ladi? View va Controller model bilan qanday o'zaro ta'sir qiladi? Oxir oqibat, View sinflari ma'lumotlarni o'qish/yozish uchun to'g'ridan-to'g'ri Model sinflari usullaridan foydalanishi mumkin emas, aks holda Modelning mustaqilligi haqida gap bo'lishi mumkin emas. Model bir-biri bilan chambarchas bog'langan sinflar to'plamini ifodalaydi, ular yaxshi ma'noda na View, na Controller kirish huquqiga ega bo'lmasligi kerak. Modelni ko'rinish va boshqaruvchi bilan ulash uchun Fasad dizayni naqshini amalga oshirish kerak. Model jabhasi Model va interfeys o'rtasidagi qatlam bo'ladi, bu orqali View ma'lumotlarni qulay formatda qabul qiladi va Controller kerakli fasad usullarini chaqirish orqali ma'lumotlarni o'zgartiradi. Sxematik ravishda, oxir-oqibat, hamma narsa quyidagicha ko'rinadi: 7-qism. MVC (Model-View-Controller) naqshiga kirish - 6

MVC: foyda nima?

MVC tamoyillariga amal qilishning asosiy maqsadi ilovaning biznes mantig'ini (modelini) uning vizualizatsiyasidan (ko'rinishi) amalga oshirishni ajratishdir. Bu ajratish kodni qayta ishlatishni oshiradi. MVC-dan foydalanishning afzalliklari foydalanuvchi bir xil ma'lumotlarni turli shakllarda taqdim etishi kerak bo'lgan hollarda eng aniq bo'ladi. Masalan, jadval, grafik yoki diagramma shaklida (turli turlardan foydalangan holda). Shu bilan birga, ko'rinishlarni amalga oshirishga ta'sir qilmasdan, siz foydalanuvchi harakatlariga reaktsiyalarni o'zgartirishingiz mumkin (tugmani bosish, ma'lumotlarni kiritish). Agar siz MVC tamoyillariga amal qilsangiz, dasturlarni yozishni soddalashtirishingiz, kodni o'qish qobiliyatini oshirishingiz va kelajakda tizimni kengaytirish va saqlashni osonlashtirishingiz mumkin. "Korxonani rivojlantirishga kirish" seriyasining yakuniy materialida biz misol sifatida Spring-MVC yordamida MVCni amalga oshirishni ko'rib chiqamiz. 8-qism. Spring-boot-da kichik dastur yozish
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION