logo

Návrhový vzor MVC

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?

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