JavaRush /Java блогы /Random-KK /7-бөлім. MVC (Model-View-Controller) үлгісіне кіріспе

7-бөлім. MVC (Model-View-Controller) үлгісіне кіріспе

Топта жарияланған
Бұл материал «Кәсіпорынның дамуына кіріспе» сериясының бөлігі болып табылады. Алдыңғы мақалалар: 7-бөлім. MVC (Model-View-Controller) үлгісіне кіріспе - 1Бұл материалда біз сізді MVC сияқты нәрсемен таныстырамыз. MVC деген не екенін айтайық, оның жасалу тарихына тоқталайық, MVC-ге тән негізгі идеялар мен тұжырымдамаларды түсінейік, қосымшаны Model, View, Controller модульдеріне қалай бөлуге болатынын кезең-кезеңімен қарастырайық, сонымен қатар шағын веб-қосымшаны жазайық. Spring-Boot және мысал ретінде Spring-MVC пайдалану арқылы деректердің Java codeынан html беттеріне қалай тасымалданатынын көрейік. Бұл материалды түсіну үшін дизайн үлгілерімен танысу керек, әсіресе Observer және Facade. HTTP сұрауларымен және жауаптарымен таныс болыңыз, html негіздерін түсініңіз, Java тілінде қандай annotationлар бар екенін біліңіз. Отырыңыз, шай қайнатыңыз, десерт, салат, негізгі және бірінші тағам дайындаңыз. Біз бастаймыз.

MVC тарихы

MVC идеяларын 70-жылдардың соңында Xerox PARC-те жұмыс істеген кезде Тригве Реенскауг тұжырымдаған. Ол кездері компьютермен жұмыс істеу ғылыми дәрежесіз және көлемді құжаттарды үнемі зерттемей мүмкін емес еді. Реенскауг өте күшті әзірлеушілер тобымен бірге шешкен мәселе қарапайым пайдаланушының компьютермен әрекеттесуін жеңілдету болды. Бір жағынан өте қарапайым және түсінікті, ал екінші жағынан компьютерді және күрделі қосымшаларды басқаруға мүмкіндік беретін құралдарды жасау қажет болды. Реенскауг «барлық жастағы балаларға арналған» портативті компьютерді - Dynabook, сондай-ақ Alan Kay жетекшілігімен SmallTalk тілін әзірлеген командада жұмыс істеді. Дәл сол кезде және сол жерде достық интерфейс тұжырымдамалары жасалды. Реенскаугтың өз командасымен жұмысы IT саласының дамуына үлкен әсер етті. MVC-ге тікелей қатысы жоқ, бірақ сол оқиғалардың маңыздылығын көрсететін қызықты фактіні көрсетейік. 2007 жылы Apple iPhone тұсаукесерінен кейін Алан Кэй былай деді: «Macintosh шыққанда, Newsweek бұл туралы не ойлайтынымды сұрады. Мен айттым: бұл сынға лайық бірінші дербес компьютер. Тұсаукесерден кейін Стив Джобс келіп: iPhone сынға лайық па? Мен оны бес-сегіз дюйм етіп жасаңыз, сонда сіз әлемді бағындырасыз», - дедім. Үш жылдан кейін, 2010 жылдың 27 қаңтарында Apple 9,7 дюймдік iPad-ты таныстырды. Яғни, Стив Джобс Алан Кэйдің кеңесін тура мағынада ұстанды. Реннскауг жұмыс істеген жоба 10 жылға созылды. Ал MVC туралы оны жасаушылардың алғашқы жарияланымы тағы 10 жылдан кейін жарық көрді. Мартин Фаулер, бағдарламалық жасақтаманың архитектурасы бойынша бірқатар кітаптар мен мақалалардың авторы, ол MVC-ті SmallTalk жұмыс нұсқасынан үйренгенін айтады. Ұзақ уақыт бойы бастапқы көзден MVC туралы ақпарат болмағандықтан, сондай-ақ бірқатар басқа себептерге байланысты бұл тұжырымдаманың көптеген әртүрлі интерпретациялары пайда болды. Нәтижесінде көптеген адамдар MVC-ті дизайн схемасы немесе үлгісі деп санайды. Көбінесе MVC композиттік үлгі немесе күрделі қолданбаларды жүзеге асыру үшін бірге жұмыс істейтін бірнеше үлгілердің тіркесімі деп аталады. Бірақ шын мәнінде, бұрын айтылғандай, MVC ең алдымен әртүрлі үлгілерді пайдалана отырып, әртүрлі тәсілдермен жүзеге асырылуы мүмкін архитектуралық идеялардың/қағидалардың/тәсілдердің жиынтығы болып табылады... Әрі қарай, MVC тұжырымдамасына енгізілген негізгі идеяларды қарастыруға тырысамыз.

MVC дегеніміз не: негізгі идеялар мен принциптер

  • VC – пайдаланушы интерфейсі бар күрделі ақпараттық жүйелерді құрудың архитектуралық идеялары мен принциптерінің жиынтығы;
  • MVC - бұл Model-View-Controller дегенді білдіретін аббревиатура.
Жауапкершіліктен бас тарту: MVC дизайн үлгісі емес. MVC - бұл пайдаланушы интерфейсі бар күрделі жүйелерді құруға арналған архитектуралық идеялар мен принциптердің жиынтығы . Бірақ ыңғайлы болу үшін, әр уақытта қайталанбау үшін: «Сәулет идеяларының жиынтығы...», біз MVC үлгісін атаймыз. Қарапайым нәрседен бастайық. Model-View-Controller сөздерінің астарында не жасырылған? Пайдаланушы интерфейсі бар жүйелерді әзірлеу кезінде MVC үлгісі бойынша жүйені үш құрамдас бөлікке бөлу керек. Бұларды өз кезегінде модульдер немесе компоненттер деп атауға болады. Қалағаныңызды айтыңыз, бірақ үшке бөліңіз. Әрбір компоненттің өз мақсаты болады. Үлгі. Бірінші компонент/модуль модель деп аталады. Ол қолданбаның барлық бизнес логикасын қамтиды. Көру. Жүйенің екінші бөлігі - көрініс. Бұл модуль пайдаланушыға деректерді көрсетуге жауап береді. Пайдаланушы көретін барлық нәрсе көрініс арқылы жасалады. Контроллер. Бұл тізбектің үшінші буыны контроллер болып табылады. Ол пайдаланушы әрекеттерін өңдеуге жауап беретін codeты сақтайды (жүйедегі кез келген пайдаланушы әрекеті контроллерде өңделеді). Модель жүйенің ең тәуелсіз бөлігі болып табылады. Тәуелсіз болғандықтан, ол View және Controller модульдері туралы ештеңе білмеуі керек. Модельдің тәуелсіздігі сонша, оны әзірлеушілер Көрініс пен контроллер туралы іс жүзінде ештеңе білмеуі мүмкін. Көріністің негізгі мақсаты модельден ақпаратты пайдаланушыға ыңғайлы форматта беру болып табылады. Көріністің негізгі шектеуі ол үлгіні ешбір жолмен өзгертпеуі керек. Контроллердің негізгі мақсаты – пайдаланушы әрекеттерін өңдеу. Контроллер арқылы пайдаланушы үлгіге өзгерістер енгізеді. Дәлірек айтқанда, үлгіде сақталған деректерге. Сізге лекцияда көрсетілген диаграмманы тағы да келтірейік: 7-бөлім. MVC (Model-View-Controller) үлгісіне кіріспе - 2Осының барлығынан біз толық логикалық қорытынды жасай аламыз. Күрделі жүйені модульдерге бөлу керек. Мұндай бөлуге қалай қол жеткізуге болатын қадамдарды қысқаша сипаттап көрейік.

1-қадам: қолданбаның бизнес логикасын пайдаланушы интерфейсінен бөліңіз

MVC негізгі идеясы пайдаланушы интерфейсі бар кез келген қолданбаны бірінші жуықтау бойынша 2 модульге бөлуге болады: қолданбаның іскерлік логикасын жүзеге асыруға жауапты модуль және пайдаланушы интерфейсі. Бірінші модуль қолданбаның негізгі функционалдығын жүзеге асырады. Бұл модуль қолданбалы домен үлгісі жүзеге асырылатын жүйенің өзегі болады. MVC тұжырымдамасында бұл модуль біздің M әрпі болады, яғни. үлгі. Екінші модуль пайдаланушыға деректерді көрсетуді және қолданушының қолданбамен әрекеттесу логикасын қоса алғанда, бүкіл пайдаланушы интерфейсін жүзеге асырады. Бұл бөлудің негізгі мақсаты - жүйенің өзегін (MVC терминологиясындағы модель) дербес әзірлеуге және сынауға болатынын қамтамасыз ету. Мұндай бөлуден кейінгі қолданба архитектурасы келесідей болады: 7-бөлім. MVC (Model-View-Controller) үлгісіне кіріспе - 3

Қадам 2. Observer үлгісін пайдаланып, модельдің одан да үлкен тәуелсіздігіне қол жеткізіңіз, сонымен қатар пайдаланушы интерфейстерін синхрондаңыз.

Мұнда біз 2 мақсатты көздейміз:
  1. Үлгінің одан да үлкен тәуелсіздігіне қол жеткізіңіз.
  2. Пайдаланушы интерфейстерін синхрондаңыз.
Келесі мысал пайдаланушы интерфейстерін синхрондау арқылы нені білдіретінін түсінуге көмектеседі. Кино билетін онлайн сатып алып, театрдағы бос орындардың санын көреміз делік. Бізбен бір уақытта басқа біреу кино билетін сатып ала алады. Егер бұл біреу бізден бұрын билет сатып алса, біздің сессияға арналған бос орындар санының азайғанын көргіміз келеді. Енді мұны бағдарлама ішінде қалай жүзеге асыруға болатынын ойластырайық. Бізде жүйе өзегі (біздің үлгі) және интерфейс (біз сатып алатын веб-бет) бар делік. Сайтта 2 пайдаланушы бір уақытта орынды таңдайды. Бірінші пайдаланушы билетті сатып алды. Екінші пайдаланушы бұл ақпаратты бетте көрсетуі керек. Бұл қалай болуы керек? Жүйе ядросынан интерфейсті жаңартатын болсақ, ядромыз, модельіміз интерфейске тәуелді болады. Модельді әзірлеу және сынау кезінде интерфейсті жаңартудың әртүрлі жолдарын есте ұстау керек. Бұған қол жеткізу үшін Observer үлгісін енгізу керек. Оның көмегімен модель барлық жазылушыларға өзгерістер туралы хабарламалар жібереді. Интерфейс осындай жазылушы бола отырып, хабарлама мен жаңартуды алады. Observer үлгісі, бір жағынан, модельге интерфейске (көрініс пен контроллерге) онда болған өзгерістер туралы хабарлауға, ал екінші жағынан олар туралы іс жүзінде ештеңе «білмеуге» және сол арқылы тәуелсіз болып қалуға мүмкіндік береді. Екінші жағынан, бұл пайдаланушы интерфейстерін синхрондауға мүмкіндік береді.

3-қадам. Интерфейсті View және Controller деп бөлу

Біз қосымшаны модульдерге бөлуді жалғастырамыз, бірақ иерархияның төменгі деңгейінде. Бұл қадамда пайдаланушы интерфейсі (1-қадамда бөлек модульге бөлінген) көрініс пен контроллерге бөлінеді. Көрініс пен контроллер арасында қатаң сызық сызу қиын. Көрініс - бұл пайдаланушы көретін нәрсе, ал контроллер - пайдаланушы жүйемен әрекеттесе алатын механизм десек, кейбір қарама-қайшылықтар бар. Веб-беттегі түймелер немесе телефон экранындағы виртуалды пернетақта сияқты басқару элементтері контроллердің бөлігі болып табылады. Бірақ олар пайдаланушыға көріністің кез келген бөлігі сияқты көрінеді. Бұл жерде біз функционалдық бөлу туралы көбірек айтып отырмыз. Пайдаланушы интерфейсінің негізгі міндеті – пайдаланушының жүйемен әрекеттесуін қамтамасыз ету. Бұл интерфейсте тек 2 функция бар екенін білдіреді:
  • пайдаланушыға жүйе туралы ақпаратты көрсету және ыңғайлы түрде көрсету;
  • пайдаланушы деректері мен командаларды жүйеге енгізу (оларды жүйеге жіберу);
Бұл функциялар интерфейсті модульдерге қалай бөлу керектігін анықтайды. Нәтижесінде жүйе архитектурасы келесідей болады: 7-бөлім. MVC (Model-View-Controller) үлгісіне кіріспе - 4Сонымен, бізде Model, View және Controller деп аталатын үш модульдің қолданбасы бар. Қорытындылай келе:
  1. MVC принциптеріне сүйене отырып, жүйені модульдерге бөлу қажет.
  2. Ең маңызды және тәуелсіз модуль модель болуы керек.
  3. Модель жүйенің өзегі болып табылады. Сізге интерфейске тәуелсіз оны әзірлеу және тексеру мүмкіндігі қажет.
  4. Ол үшін жүйені бөлудің бірінші қадамында оны модельге және интерфейске бөлу керек.
  5. Әрі қарай, Observer үлгісін қолдана отырып, біз модельді оның тәуелсіздігінде күшейтеміз және пайдаланушы интерфейстерінің синхрондалуын аламыз.
  6. Үшінші қадам - ​​интерфейсті контроллерге және көрініске бөлу.
  7. Пайдаланушыдан жүйеге ақпаратты енгізу үшін тек контроллерге қажет.
  8. Жүйеден пайдаланушыға ақпаратты шығаратынның бәрі көрінеді.
Талқылау үшін тағы бір маңызды нәрсе қалды және сіз Howао ішуге болады.

Көрініс пен контроллер және үлгі арасындағы қарым-қатынас туралы аздап

Пайдаланушы ақпаратты контроллер арқылы енгізгенде, ол сол арқылы модельге өзгерістер енгізеді. Кем дегенде пайдаланушы үлгі деректеріне өзгерістер енгізеді. Пайдаланушы интерфейс элементтері арқылы ақпаратты алған кезде (Көрініс арқылы), пайдаланушы үлгі деректері туралы ақпаратты алады. Бұл қалай болады? Көрініс пен контроллер үлгімен қалай әрекеттеседі? Өйткені, View кластары деректерді оқу/жазу үшін Модель класстарының әдістерін тікелей пайдалана алмайды, әйтпесе Модельдің тәуелсіздігі туралы мәселе болуы мүмкін емес. Модель бір-бірімен тығыз байланысқан сыныптар жинағын білдіреді, оған Көрініс те, Контроллер де қол жеткізе алмайды. Модельді Көрініс пен Контроллермен қосу үшін қасбет дизайны үлгісін жүзеге асыру қажет. Модельдің қасбеті Модель мен интерфейс арасындағы дәл қабат болады, ол арқылы View ыңғайлы форматта деректерді алады, ал контроллер қажетті қасбет әдістерін шақыру арқылы деректерді өзгертеді. Схема бойынша, соңында бәрі келесідей болады: 7-бөлім. MVC (Model-View-Controller) үлгісіне кіріспе - 6

MVC: қандай пайдасы бар?

MVC принциптерін ұстанудың негізгі мақсаты қолданбаның іскерлік логикасын (үлгісін) оның визуализациясынан (көрінісін) жүзеге асыруды бөлу болып табылады. Бұл бөлу codeты қайта пайдалануды арттырады. MVC пайдаланудың артықшылықтары пайдаланушыға бірдей деректерді әртүрлі пішінде беру қажет болған жағдайда айқын көрінеді. Мысалы, кесте, график немесе диаграмма түрінде (әртүрлі типтерді пайдалана отырып). Сонымен қатар, көріністерді жүзеге асыруға әсер етпей, пайдаланушы әрекеттеріне реакцияларды өзгертуге болады (батырманы басу, деректерді енгізу). Егер сіз MVC принциптерін ұстанатын болсаңыз, сіз бағдарламаларды жазуды жеңілдете аласыз, codeтың оқылуын арттыра аласыз және болашақта жүйені кеңейту мен қолдауды жеңілдете аласыз. «Кәсіпорынның дамуына кіріспе» сериясының қорытынды материалында мысал ретінде Spring-MVC көмегімен MVC енгізуді қарастырамыз. 8-бөлім. Spring-boot бағдарламасында шағын қосымшаны жазу
Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION