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?
- Komponenty návrhového vzoru MVC
- Komunikace mezi komponenty
- Příklad návrhového vzoru MVC
- Výhody návrhového vzoru MVC
- Nevýhody návrhového vzoru 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.