Návrhový vzor MVC je vzor softvérovej architektúry, ktorý rozdeľuje aplikáciu na tri hlavné komponenty: Model, View a Controller, čo uľahčuje správu a údržbu kódovej základne. Umožňuje tiež opätovnú použiteľnosť komponentov a podporuje modulárnejší prístup k vývoju softvéru.
Dôležité témy pre návrhový vzor MVC
- Čo je to návrhový vzor MVC?
- Komponenty návrhového vzoru MVC
- Komunikácia medzi komponentmi
- Príklad návrhového vzoru MVC
- Výhody vzoru MVC Design Pattern
- Nevýhody návrhového vzoru MVC
Čo je to návrhový vzor MVC?
The Ovládač zobrazenia modelu (MVC) návrhový vzor určuje, že aplikácia pozostáva z dátového modelu, prezentačných informácií a riadiacich informácií. Vzor vyžaduje, aby každý z nich bol rozdelený do rôznych objektov.
- Vzor MVC rozdeľuje obavy aplikácie do troch odlišných komponentov, z ktorých každý zodpovedá za špecifický aspekt funkčnosti aplikácie.
- Toto oddelenie problémov uľahčuje údržbu a rozšírenie aplikácie, pretože zmeny jedného komponentu si nevyžadujú zmeny ostatných komponentov.
Komponenty návrhového vzoru MVC
1. Model
Komponent Model v dizajnovom vzore MVC (Model-View-Controller) predstavuje dáta a obchodnú logiku aplikácie. Zodpovedá za správu údajov aplikácie, spracovanie obchodných pravidiel a odpovedanie na žiadosti o informácie od iných komponentov, ako je napríklad View a Controller.
2. Zobraziť
Zobrazuje údaje z modelu používateľovi a odosiela používateľské vstupy do ovládača. Je pasívny a neinteraguje priamo s modelom. Namiesto toho prijíma údaje z modelu a odosiela používateľské vstupy do riadiacej jednotky na spracovanie.
3. Ovládač
Ovládač funguje ako sprostredkovateľ medzi modelom a pohľadom. Spracúva vstupy používateľov a podľa toho aktualizuje model a aktualizuje zobrazenie tak, aby odrážalo zmeny v modeli. Obsahuje aplikačnú logiku, ako je validácia vstupu a transformácia údajov.
Komunikácia medzi komponentmi
Tento komunikačný tok nižšie zaisťuje, že každý komponent je zodpovedný za špecifický aspekt funkčnosti aplikácie, čo vedie k lepšie udržiavateľnej a škálovateľnej architektúre.
- Interakcia používateľa so zobrazením:
- Používateľ interaguje so zobrazením, napríklad kliknutím na tlačidlo alebo zadávaním textu do formulára.
- Zobrazenie prijíma vstup používateľa:
- Pohľad prijíma vstup od používateľa a posiela ho do riadiacej jednotky.
- Ovládač spracováva vstup používateľa:
- Ovládač prijíma užívateľský vstup z pohľadu.
- Interpretuje vstup, vykoná všetky potrebné operácie (ako je aktualizácia modelu) a rozhodne, ako reagovať.
- Model aktualizácie ovládača:
- Ovládač aktualizuje model na základe užívateľského vstupu alebo aplikačnej logiky.
- Model upozorní pohľad na zmeny:
- Ak sa model zmení, upozorní na to zobrazenie.
- Zobraziť údaje požiadaviek z modelu:
- Zobrazenie vyžaduje údaje od modelu na aktualizáciu jeho zobrazenia.
- Zobrazenie aktualizácií ovládača:
- Ovládač aktualizuje zobrazenie na základe zmien v modeli alebo v reakcii na vstup používateľa.
- Zobraziť aktualizované používateľské rozhranie renderov:
- Zobrazenie vykreslí aktualizované používateľské rozhranie na základe zmien vykonaných ovládačom.
Príklad návrhového vzoru MVC
Nižšie je uvedený kód vyššie uvedeného problémového vyhlásenia pomocou vzoru MVC Design Pattern:
Poďme sa rozobrať na kód komponentu:
1. Model (trieda študentov)
Predstavuje údaje (meno študenta a číslo zoznamu) a poskytuje spôsoby prístupu a úpravy týchto údajov.
Java
ako získať skryté aplikácie
class> Student {> >private> String rollNo;> >private> String name;> >public> String getRollNo() {> >return> rollNo;> >}> >public> void> setRollNo(String rollNo) {> >this>.rollNo = rollNo;> >}> >public> String getName() {> >return> name;> >}> >public> void> setName(String name) {> >this>.name = name;> >}> }> |
>
>
2. Zobraziť (trieda StudentView)
Predstavuje, ako by sa údaje (podrobnosti o študentovi) mali zobraziť používateľovi. Obsahuje metódu ( printStudentDetails> ), aby sa vytlačilo meno a číslo študenta.
Java
stánkový algoritmus
class> StudentView {> >public> void> printStudentDetails(String studentName, String studentRollNo) {> >System.out.println(>'Student:'>);> >System.out.println(>'Name: '> + studentName);> >System.out.println(>'Roll No: '> + studentRollNo);> >}> }> |
>
>
3. Controller (trieda StudentController)
Funguje ako sprostredkovateľ medzi modelom a pohľadom. Obsahuje odkazy na objekty Model a View. Poskytuje metódy na aktualizáciu modelu (napr. setStudentName> , setStudentRollNo> ) a aktualizovať zobrazenie ( updateView> ).
Java
reverzný reťazec java
class> StudentController {> >private> Student model;> >private> StudentView view;> >public> StudentController(Student model, StudentView view) {> >this>.model = model;> >this>.view = view;> >}> >public> void> setStudentName(String name) {> >model.setName(name);> >}> >public> String getStudentName() {> >return> model.getName();> >}> >public> void> setStudentRollNo(String rollNo) {> >model.setRollNo(rollNo);> >}> >public> String getStudentRollNo() {> >return> model.getRollNo();> >}> >public> void> updateView() {> >view.printStudentDetails(model.getName(), model.getRollNo());> >}> }> |
>
>
Vyplňte kód pre vyššie uvedený príklad
Nižšie je uvedený úplný kód pre vyššie uvedený príklad:
Java
class> Student {> >private> String rollNo;> >private> String name;> >public> String getRollNo() {> >return> rollNo;> >}> >public> void> setRollNo(String rollNo) {> >this>.rollNo = rollNo;> >}> >public> String getName() {> >return> name;> >}> >public> void> setName(String name) {> >this>.name = name;> >}> }> class> StudentView {> >public> void> printStudentDetails(String studentName, String studentRollNo) {> >System.out.println(>'Student:'>);> >System.out.println(>'Name: '> + studentName);> >System.out.println(>'Roll No: '> + studentRollNo);> >}> }> class> StudentController {> >private> Student model;> >private> StudentView view;> >public> StudentController(Student model, StudentView view) {> >this>.model = model;> >this>.view = view;> >}> >public> void> setStudentName(String name) {> >model.setName(name);> >}> >public> String getStudentName() {> >return> model.getName();> >}> >public> void> setStudentRollNo(String rollNo) {> >model.setRollNo(rollNo);> >}> >public> String getStudentRollNo() {> >return> model.getRollNo();> >}> >public> void> updateView() {> >view.printStudentDetails(model.getName(), model.getRollNo());> >}> }> public> class> MVCPattern {> >public> static> void> main(String[] args) {> >Student model = retriveStudentFromDatabase();> >StudentView view =>new> StudentView();> >StudentController controller =>new> StudentController(model, view);> >controller.updateView();> >controller.setStudentName(>'Vikram Sharma'>);> >controller.updateView();> >}> >private> static> Student retriveStudentFromDatabase() {> >Student student =>new> Student();> >student.setName(>'Lokesh Sharma'>);> >student.setRollNo(>'15UCS157'>);> >return> student;> >}> }> |
>
>
Výkon
značka zuckerberg vzdelanie
Student:> Name: Lokesh Sharma> Roll No: 15UCS157> Student:> Name: Vikram Sharma> Roll No: 15UCS157> |
>
>
Výhody vzoru MVC Design Pattern
- Rozdelenie obáv: MVC oddeľuje rôzne aspekty aplikácie (údaje, používateľské rozhranie a logiku), čo uľahčuje pochopenie, údržbu a úpravu kódu.
- Modularita: Každý komponent (Model, View, Controller) môže byť vyvíjaný a testovaný samostatne, čo podporuje opätovnú použiteľnosť a škálovateľnosť kódu.
- Flexibilita: Keďže komponenty sú nezávislé, zmeny jedného komponentu neovplyvňujú ostatné, čo umožňuje jednoduchšie aktualizácie a úpravy.
- Paralelný vývoj: Viacero vývojárov môže pracovať na rôznych komponentoch súčasne, čím sa urýchli proces vývoja.
- Opätovná použiteľnosť kódu: Komponenty možno opätovne použiť v iných častiach aplikácie alebo v rôznych projektoch, čím sa zníži čas a úsilie na vývoj.
Nevýhody návrhového vzoru MVC
- zložitosť: Implementácia vzoru MVC môže zvýšiť zložitosť kódu, najmä pre jednoduchšie aplikácie, čo vedie k réžii pri vývoji.
- Krivka učenia: Vývojári musia pochopiť koncept MVC a ako ho efektívne implementovať, čo si môže vyžadovať dodatočný čas a zdroje.
- Režijné náklady: Komunikácia medzi komponentmi (Model, View, Controller) môže viesť k réžii, ktorá ovplyvňuje výkon aplikácie, najmä v prostrediach s obmedzenými zdrojmi.
- Potenciál nadmerného inžinierstva: V niektorých prípadoch môžu vývojári aplikáciu nadmerne prepracovať pridávaním nepotrebných abstrakcií a vrstiev, čo vedie k nafúknutému a ťažko udržiavateľnému kódu.
- Zvýšený počet súborov: Výsledkom MVC môže byť väčší počet súborov a tried v porovnaní s jednoduchšími architektúrami, čo môže spôsobiť, že štruktúra projektu bude zložitejšia a bude sa v nej ťažšie orientovať.