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ť.