Model-view-controller este

Model-view-controller (MVC. "Model view-comportament", "Model view-controller") este o schemă pentru utilizarea mai multor modele de design. cu care modelul de date aplicație, interfața utilizatorului și interacțiunea utilizatorului sunt împărțite în trei componente separate, astfel încât modificarea uneia dintre componente să aibă un impact minim asupra restului. Acest model de design este adesea folosit pentru a construi un cadru arhitectural atunci când trece de la teorie la implementare într-o anumită zonă de subiect [1].







Conceptul MVC a fost descrisă în 1979 [2] Trygve Reenskaugom (Ing. Trygve Reenskaug), în timp ce lucrează la limbajul de programare Smalltalk în Xerox PARC. Punerea în aplicare inițială este descris în articolul «Programare Aplicații în Smalltalk-80: Cum se utilizează Model-View-Controller» [3]. Apoi, Jim Altoff și echipa de dezvoltare au implementat versiunea MVC pentru biblioteca de clasă Smalltalk-80.

În conceptul original, a fost descrisă însăși ideea și rolul fiecărui element al modelului, al reprezentării și al controlorului. Dar legăturile dintre ele au fost descrise fără specificații. În plus, au existat două modificări principale:

  1. Modelul pasiv - modelul nu are niciun mijloc de a influența vizualizarea sau controlerul și este utilizat de acesta ca sursă de date pentru afișare. Toate modificările aduse modelului sunt monitorizate de către controlor și sunt responsabile de redactarea vizualizării, dacă este necesar. Un astfel de model este folosit mai des în programarea structurală. deoarece în acest caz modelul este pur și simplu o structură de date, fără metodele de procesare a acestora.
  2. Modelul activ - modelul notifică ideea că au avut loc schimbări în acesta, iar reprezentările care sunt interesate de notificare abonează la aceste mesaje. Acest lucru vă permite să păstrați independența modelului atât din partea controlerului, cât și a prezentării.

Implementarea clasică a conceptului MVC este considerată a fi versiunea cu modelul activ.

numire

Scopul principal al aplicării acestui concept este de a diviza logica de afaceri (modelul) de la vizualizare (reprezentare a vederii). Această diviziune crește posibilitatea reutilizării. Cea mai folositoare aplicație a acestui concept este atunci când utilizatorul trebuie să vadă simultan aceleași date în contexte diferite și / sau din perspective diferite. În particular, sunt îndeplinite următoarele sarcini:

  1. Mai multe modele pot fi atașate la un model. fără a afecta implementarea modelului. De exemplu, unele date pot fi prezentate simultan ca o foaie de calcul, o histogramă și o diagrama plăcintă.
  2. Fără a afecta punerea în aplicare a speciilor. puteți modifica răspunsul la acțiunile utilizatorului (faceți clic pe buton, introduceți date), este suficient să utilizați un alt controler.
  3. Un număr de dezvoltatori se specializează doar într-o singură zonă: fie dezvoltă o interfață grafică, fie dezvoltă logică de afaceri. Prin urmare, este posibil să se asigure că programatorii implicați în dezvoltarea logicii de afaceri (modele) nu vor fi în general conștienți de ce fel de prezentare vor fi folosite.






Conceptul MVC vă permite să împărțiți datele, prezentarea și procesarea acțiunilor utilizatorilor în trei componente separate:

  • Model (modelul englez). Modelul oferă cunoștințe: datele și metodele de lucru cu aceste date, răspunde solicitărilor, schimbându-și starea. Nu conține informații despre modul în care aceste cunoștințe pot fi vizualizate.
  • Reprezentarea. vizualizare (engleză). Responsabil pentru afișarea informațiilor (vizualizare). Deseori, o vizualizare (fereastră) cu elemente grafice acționează ca o reprezentare.
  • Controler (Engl. Controller). Oferă comunicare între utilizator și sistem: controlează datele introduse de utilizator și utilizează modelul și prezentarea pentru a implementa reacția necesară.

Este important să rețineți că aceasta este o reprezentare. Atât controlerul cât și controlerul depind de model. Totuși, modelul nu depinde nici de reprezentare. nici de la operator. Astfel, scopul acestei separări este realizat: vă permite să construiți un model indiferent de reprezentarea vizuală. și să creeze, de asemenea, mai multe vederi diferite pentru un model.

Pentru a implementa schema Model-View-Controller, se utilizează un număr destul de mare de modele de proiectare (în funcție de complexitatea soluției arhitecturale), principalele dintre acestea fiind "observator", "strategie", "linker" [5].

Cele mai frecvente erori

Programatorii începători (în special în programare web. MVC unde abrevierea a devenit popular) sunt adesea tratate ca un model arhitectural al unui model de pasiv MVC MVC. În acest caz, modelul funcționează exclusiv ca un set de funcții pentru accesarea datelor, iar controlerul conține logica de afaceri. Drept rezultat, codul modelului este de fapt un mijloc de obținere a datelor din DBMS. și controlerul este un modul tipic plin de logică de afaceri sau un script în terminologia programării web. Ca urmare a acestei înțelegeri a dezvoltatorilor MVC trebuie să scrie cod care Padraic Brady, cunoscut în cercurile comunității Zend Framework, descris ca TTUK - „Thick contondent controlere urâte» (Fat Controller Ugly Stupid) [6]:

TTUK-ul mediu a primit date din baza de date (folosind stratul de abstractizare al bazei de date, pretinzând a fi un model) sau manipulate, validate, înregistrate și, de asemenea, transmise date în vizualizare. Această abordare a devenit foarte populară deoarece utilizarea unor astfel de controale este similară practicii clasice de utilizare a unui fișier php separat pentru fiecare pagină a aplicației.

Dar, în programarea orientată pe obiecte, se utilizează modelul MVC activ, unde modelul nu este doar o colecție de cod de acces la date și un DBMS, ci toate logica afacerii. La rândul lor, controlorii sunt doar elemente ale sistemului, ale căror îndatoriri imediate includ primirea datelor din cerere și transferul acestora către alte elemente ale sistemului. Numai în acest caz controlerul devine "subțire" și efectuează numai funcția unui strat de lipici între componentele individuale ale sistemului.

Exemplu de controler MVC în PHP5

La începutul utilizând controlerul getView () metoda devine reprezentărilor obiect programator (View,), care invocă metode specifice reprezentărilor (View): loadI18n () metoda prin care View (View,) încărcate fișierele de internaționalizare. și metoda initTitle (). Formarea titlului unei pagini HTML pe baza datelor obținute în timpul parsării fișierelor de internaționalizare.

Apoi, prin metoda checkAccess () a controlerului, se verifică dacă utilizatorul are acces la această pagină. Dacă nu este permis accesul, se va genera un avertisment și va apărea o redirecționare către resursa "/ admin /". Apoi, Modelul este instanțiat sau, mai degrabă, una dintre componentele modelului este serviciul Krugozor_Module_Advert_Service_List. Această clasă încapsulează logica obținerii unei game de obiecte model bazate pe diferiți parametri din obiectul Cerere. și, de asemenea, interacționează cu obiectul de paginare.

Exemplul arată clar că controlerul este legătura dintre cele două componente principale ale sistemului - modelul și vizualizarea. Modelul nu cunoaște nimic despre prezentare, iar controlerul nu conține nici o logică de afaceri.

notițe

literatură

  • Wikiversity are materiale pe tema Separarea vizualizării și a logicii de afaceri
  • Serghei Berdachuk. Eclipse RCP. Manager de fișiere
  • Model-View-Controller în .Net
  • Generalizat model-View-Controller
  • Triada MVC în acțiune
  • MVC pentru începători
  • Dezvoltarea aplicațiilor încorporate utilizând eSWT






Trimiteți-le prietenilor: