Aplicațiile moderne au nevoie de o asemenea varietate de caracteristici, încât procesul de dezvoltare a acestora a crescut în dimensiune și complexitate. Pentru a ajuta, puteți folosi un model de design arhitectural. Aceștia sprijină crearea de aplicații ușor de testat și întreținut.
Cele mai populare trei modele de design sunt MVC, MVP și MVVM. MVC înseamnă model, vizualizare și controler, în timp ce MVP înseamnă model, vizualizare și prezentator și MVVM pentru model, vizualizare și model de vizualizare.
Modele arhitecturale și de design
Model arhitectural
Un model arhitectural clarifică și definește unele componente cruciale ale unei arhitecturi software. Chiar dacă un model arhitectural transmite o imagine a unui sistem, nu este o arhitectura. De fapt, este o soluție generală și reutilizabilă la o problemă frecventă în arhitectura software într-un anumit context.
Model de design
Un model de proiectare este o bună practică oficializată pe care o puteți utiliza pentru a rezolva probleme comune atunci când proiectați o aplicație sau un sistem.
Diferența dintre modelul arhitectural și cel de design
Să începem cu termenul comun — model. În software, un model este o proprietate recurentă care vă permite să descompuneți o structură uriașă și complexă în componente mai mici și mai simple. Puteți folosi acest model pentru a crea o soluție generală pentru o clasă de probleme.
În fiecare nivel de dezvoltare software, veți folosi instrumente diferite. La niveluri mai mici, aceste instrumente sunt modele de design. Modelele arhitecturale există la niveluri mai mari și paradigme de programare la nivel de implementare.
De ce avem nevoie de modele de design arhitectural?
În timpul dezvoltării software, puteți utiliza modele de design arhitectural pentru a rezolva probleme comune. O arhitectură bună vă poate ajuta și să:
- Împărțiți sarcinile complexe în sarcini mai simple.
- Reduce bug-urile.
- Produceți cod testabil și menținut.
Dar fără un model arhitectural, este posibil să întâmpinați dificultăți în menținerea logicii de afaceri a aplicației.
Model, View, ViewModel, Controller și Prezentator
Înainte de a vă uita la fiecare model, iată termenii care le compun:
- Model stochează date și comunică direct cu baza de date. Modelul este partea care reprezintă datele și logica aplicației. Acesta definește regulile de afaceri care gestionează manipularea, modificarea sau procesarea datelor.
- Vedere afișează datele modelului și este responsabil pentru reprezentarea datelor în interfața cu utilizatorul.
- ViewModel este exclusiv modelului MVVM. Aceasta este o abstractizare a stratului de vizualizare și acționează și ca un înveliș pentru datele modelului.
- Controlor este componenta care integrează vederea și modelul.
- Prezentator este o componentă care există doar în modelul MVP. Prezentatorul primește intrarea din componenta de vizualizare și procesează datele cu ajutorul modelului.
Modele MVC, MVP și MVVM
Model-View-Controller Pattern
The Model arhitectural MVC a fost primul și este popular astăzi în domeniul aplicațiilor web. A fost introdus în anii 1970. Acest model vă permite să construiți o aplicație în jurul Separarii preocupărilor (SoC). Ușurează efortul de care aveți nevoie pentru a testa, întreține și dezvolta aplicația dvs.
În modelul MVC, modelul nu înțelege vederea sau controlerul. Observatorul modelului va primi o alertă ori de câte ori apare o schimbare în vizualizarea și controlerul. Controlerul ajută procesul de rutare să conecteze modelul la vizualizarea relevantă.
Unele dintre avantajele modelului MVC sunt:
- Separarea preocupărilor (mai concentrată).
- Ușurează testarea și gestionarea codului.
- Promovează decuplarea straturilor aplicației.
- O mai bună organizare a codului și reutilizabilitate.
Iată cum funcționează MVC:
Datorită SoC, MVC poate reduce dimensiunea codului și poate crea un cod bun, curat și ușor de gestionat.
Model-View-Presenter Pattern
Modelul MVP împărtășește două componente cu MVC: model și vedere. Înlocuiește controlerul cu prezentatorul. Prezentatorul - așa cum sugerează și numele - este folosit pentru a prezenta ceva. Vă permite să bateți joc de vedere mai ușor.
În MVP, prezentatorul are funcționalitatea „omul de mijloc”, deoarece toată logica de prezentare este împinsă la ea. Vizualizarea și prezentatorul în MVP sunt, de asemenea, independente una de cealaltă și interacționează prin intermediul unei interfețe.
Iată o ilustrare a modului în care funcționează modelul MVP:
Prezentatorul primește informații de la utilizator prin vizualizare. Apoi procesează acțiunile utilizatorului cu ajutorul modelului, trecând rezultatele înapoi în vizualizare. Prezentatorul comunică cu vizualizarea prin interfețe.
Model-View-View Model Pattern
MVVM este evoluția modernă a MVC. Scopul principal al MVVM este de a oferi o separare clară între logica domeniului și stratul de prezentare. MVVM acceptă legarea de date în două sensuri între vizualizare și model de vizualizare.
Modelul MVVM vă permite să separați vizualizarea și modelul codului. Aceasta înseamnă că atunci când modelul se schimbă, vizualizarea nu este necesară și invers. Folosind un model de vizualizare, puteți face testarea unitară și vă puteți testa comportamentul logic fără a vă implica vizualizarea.
Iată o ilustrare a modului în care funcționează MVVM:
Când să utilizați MVC, MVP și MVVM
Acum că ați învățat despre fiecare model, aflați când să le utilizați.
Când să utilizați MVC
MVC este pur și simplu o implementare a Separation of Concerns. Dacă aplicația dvs. trebuie să separe datele (modelul), analiza datelor (controller) și prezentarea datelor (vizualizare), MVC va funcționa bine. MVC servește bine și într-o aplicație în care sursa de date și/sau prezentarea datelor se pot schimba în orice moment.
Când să utilizați MVP
Puteți utiliza MVP atunci când aplicația dvs. are un flux bidirecțional. Dacă interacțiunile utilizatorilor trebuie să solicite ceva de la model, iar rezultatul acestei solicitări va schimba imediat interfața de utilizare, luați în considerare MVP.
Când să utilizați MVVM
Veți dori să utilizați MVVM atunci când:
- Trebuie să împărtășiți un proiect cu un designer, iar munca de proiectare și dezvoltare se poate realiza independent.
- Aveți nevoie de testare unitară pentru soluțiile dvs.
- Trebuie să aveți componente reutilizabile, atât în cadrul, cât și între proiectele din organizația dvs.
- Doriți mai multă flexibilitate pentru a vă schimba opiniile fără a fi nevoie să refactorizați altă logică în baza de cod.
Ce model ar trebui să alegi?
Motivul principal pentru a utiliza un model de design este reducerea complexității. Puteți face acest lucru reducând complexitatea generală sau înlocuind complexitatea nefamiliară cu cea familiară. Dacă un model de design nu poate reduce complexitatea în niciunul dintre aceste două moduri, nu utilizați niciunul; nu va adăuga nicio valoare.
Dacă sunteți cu adevărat sigur că ar trebui să utilizați un model de design, încercați să faceți o listă de verificare. Bazează-te pe situațiile pe care le-ai văzut aici și alege cea mai potrivită pentru proiectul tău.