logo

Návrhový vzor MVC

Návrhový vzor MVC je vzor softwarové architektury, který rozděluje aplikaci do tří hlavních komponent: Model, View a Controller, což usnadňuje správu a údržbu kódové základny. Umožňuje také opětovné použití komponent a podporuje modulárnější přístup k vývoji softwaru.



Důležitá témata pro návrhový vzor MVC

Co je návrhový vzor MVC?

The Ovladač zobrazení modelu Návrhový vzor (MVC) určuje, že se aplikace skládá z datového modelu, prezentačních informací a řídicích informací. Vzor vyžaduje, aby každý z nich byl rozdělen do různých objektů.

  • Vzor MVC rozděluje obavy aplikace do tří odlišných komponent, z nichž každá je zodpovědná za konkrétní aspekt funkčnosti aplikace.
  • Toto oddělení zájmů usnadňuje údržbu a rozšiřování aplikace, protože změny jedné součásti nevyžadují změny součástí ostatních.

Komponenty návrhového vzoru MVC



1. Model

Komponenta Model v návrhovém vzoru MVC (Model-View-Controller) představuje data a obchodní logiku aplikace. Zodpovídá za správu dat aplikace, zpracování obchodních pravidel a odpovídání na požadavky na informace z jiných komponent, jako je View a Controller.

2. Zobrazit

Zobrazuje data z modelu uživateli a odesílá uživatelské vstupy do řídicí jednotky. Je pasivní a neinteraguje přímo s modelem. Místo toho přijímá data z modelu a odesílá uživatelské vstupy do řídicí jednotky ke zpracování.

3. Ovladač

Ovladač funguje jako prostředník mezi modelem a pohledem. Zpracovává uživatelské vstupy a podle toho aktualizuje model a aktualizuje pohled, aby odrážel změny v modelu. Obsahuje aplikační logiku, jako je ověřování vstupu a transformace dat.



Komunikace mezi komponenty

Tento níže uvedený komunikační tok zajišťuje, že každá komponenta je zodpovědná za konkrétní aspekt funkčnosti aplikace, což vede k lépe udržovatelné a škálovatelné architektuře.

  • Uživatelská interakce se zobrazením:
    • Uživatel interaguje s pohledem, například kliknutím na tlačítko nebo zadáním textu do formuláře.
  • Zobrazení přijímá uživatelský vstup:
    • Pohled přijímá vstup od uživatele a předává jej řadiči.
  • Řadič zpracovává uživatelský vstup:
    • Řadič přijímá uživatelský vstup z pohledu.
    • Interpretuje vstup, provede všechny nezbytné operace (jako je aktualizace modelu) a rozhodne, jak reagovat.
  • Model aktualizace ovladače:
    • Řadič aktualizuje model na základě uživatelského vstupu nebo aplikační logiky.
  • Model upozorní pohled na změny:
    • Pokud se model změní, upozorní na to Pohled.
  • Zobrazit data požadavků z modelu:
    • Zobrazení vyžaduje data od modelu, aby aktualizovalo své zobrazení.
  • Zobrazení aktualizací ovladače:
    • Kontrolér aktualizuje pohled na základě změn v modelu nebo v reakci na vstup uživatele.
  • Zobrazit aktualizované uživatelské rozhraní renderů:
    • Zobrazení vykreslí aktualizované uživatelské rozhraní na základě změn provedených ovladačem.

Příklad návrhového vzoru MVC

Níže je uveden kód výše uvedeného prohlášení o problému pomocí MVC Design Pattern:

Pojďme se rozebrat do kódu pro komponenty:

1. Model (třída studentů)

Představuje data (jméno studenta a číslo role) a poskytuje metody pro přístup a úpravu těchto dat.

Jáva


zkontrolujte null v Javě



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. Zobrazit (třída StudentView)

Představuje, jak by se data (podrobnosti o studentovi) měla zobrazit uživateli. Obsahuje metodu ( printStudentDetails> ) vytisknout jméno studenta a číslo role.

Jáva




jak tisknout java
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 (třída StudentController)

Funguje jako prostředník mezi modelem a pohledem. Obsahuje odkazy na objekty Model a Pohled. Poskytuje způsoby aktualizace modelu (např. setStudentName> , setStudentRollNo> ) a aktualizovat zobrazení ( updateView> ).

Jáva


linux přejmenovat adresář



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());> >}> }>

>

>

Dokončete kód pro výše uvedený příklad

Níže je uveden úplný kód pro výše uvedený příklad:

Jáva




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ýstup

windows.open javascript




Student:> Name: Lokesh Sharma> Roll No: 15UCS157> Student:> Name: Vikram Sharma> Roll No: 15UCS157>

>

>

Výhody návrhového vzoru MVC

  • Rozdělení obav: MVC odděluje různé aspekty aplikace (data, uživatelské rozhraní a logiku), což usnadňuje pochopení, údržbu a úpravy kódu.
  • Modularita: Každou komponentu (Model, View, Controller) lze vyvíjet a testovat samostatně, což podporuje opětovnou použitelnost a škálovatelnost kódu.
  • Flexibilita: Vzhledem k tomu, že komponenty jsou nezávislé, změny jedné komponenty neovlivňují ostatní, což umožňuje snadnější aktualizace a úpravy.
  • Paralelní vývoj: Na různých komponentách může pracovat více vývojářů současně, což urychluje proces vývoje.
  • Znovupoužitelnost kódu: Komponenty lze znovu použít v jiných částech aplikace nebo v různých projektech, což snižuje čas a úsilí na vývoj.

Nevýhody návrhového vzoru MVC

  • Složitost: Implementace vzoru MVC může zvýšit složitost kódu, zejména u jednodušších aplikací, což vede k režii při vývoji.
  • Křivka učení: Vývojáři musí porozumět konceptu MVC a tomu, jak jej efektivně implementovat, což může vyžadovat další čas a zdroje.
  • Režie: Komunikace mezi komponentami (Model, View, Controller) může vést k režii, která ovlivňuje výkon aplikace, zejména v prostředích s omezenými zdroji.
  • Potenciál pro přetechnizaci: V některých případech mohou vývojáři aplikaci překonstruovat přidáním zbytečných abstrakcí a vrstev, což vede k nabubřelému a obtížně udržovatelnému kódu.
  • Zvýšený počet souborů: Výsledkem MVC může být větší počet souborů a tříd ve srovnání s jednoduššími architekturami, což může způsobit, že struktura projektu bude složitější a bude obtížnější se orientovat.