Sunteți pe pagina 1din 21

Sablonul De Proiectare

Model View Controller


Mihai-Razvan Patruna

Ce este un Sablon de
Proiectare?
Un sablon reprezint o soluie comun a
unei probleme ntr-un anumit context.

Arhitectul Christopher Alexander definea


sabloanele de proiectare astfel: Fiecare
ablon descrie o problem care apare
mereu n domeniul nostru de activitate i
indic esena soluiei acelei probleme ntrun mod care permite utilizarea soluiei de
nenumrate ori n contexte diferite.

De ce sunt utile sabloanele de


proiectare?
Proiectarea unui software presupune luarea
unor decizii a caror corectitudine este
testata mai tarziu la partea de
implementare.
Unul din avantajele folosirii sabloanelor de
proiectare este acela ca poate duce la
cresterea vitezei de dezvoltare a softwareului, cat si a calitatii acestuia, utilizand
solutii testate, a caror eficacitate a fost
dovedita.

De ce sa utilizam sablonul
Model View Controller?
Paradigma MVC se refera la izolarea logicii
interne a unei aplicatii de partea sa de
prezentare (interfata), prin impartirea
responsabilitatilor.
Organizarea MVC, ofera posibilitatea
modificarii independente a componentelor
si faciliteaza reutilizarea. Acest lucru va
rezulta in aplicatii extrem de usor de
modificat.

Scurt Istoric

Trygve Reenskaug a introdus MVC in limbajul


Smalltalk-76 in timp ce vizita compania Xerox
Parc (companie de cercetare si dezvoltare in Palo
Alto, California, cu o reputatie foarte buna pentru
contributiile sale in Tehnologia Informatiei si
Sisteme Hardware), in anii 1970. In 1980, Jim
Althoff si alte personae au implementat o
versiune de MVC pentru biblioteca de clase a
limbajului Smalltalk-80. De-abia mai tarziu, in
anul 1988, intr-un articol din The Journal of
Object Technology, MVC a fost exprimat ca un
concept general.

Conceptul Model View


Controller

Aplicatia software este impartita in trei parti


interconectate, pentru a separa
reprezentarea interna a informatiei de
modul in care aceasta este prezentata sau
acceptata de catre utilizator.

Model
Modelul, ce reprezinta elementul central
MVC, manipuleaza operatiunile logice si de
utilizare de informatie pentru a rezulta o
forma usor de inteles.
Acesta pastreaza, in general datele carora
li se doreste a adauga o vizualizare
numindu-se in acest caz, modele de date
(data model).

View
Vizualizarea este reprezentarea grafica a
modelului, descriind pentru componenta
modul cum arata (look).
Mai exact, aceasta se refera la exprimarea
ultimei forme a datelor: interfata grafica ce
interactioneaza cu utilizatorul final.
Rolul sau este de a pastra pe ecran
reprezentarea actualizata, primind astfel
mesaje de la model si controler.

Controller
Controlerul permite verificarea accesului
la aplicatia noastra.
Pot fi fisiere, scripturi sau programe, in
general orice informatie permisa de
interfata.
Astfel, putem diversifica continutul nostru
de o forma dinamica si statica, in acelasi
timp, determinand comportamentul (feel)
componentei.

Comunicarea in cadrul
MVC
Fiecare obiect MVC pastreaza o referinta
catre catre celelalte obiect(e) cu care
interactioneaza.
Mai exact, instanta model are nevoie de o
referinta utila instantei view la crearea
prezentarii modelului, in timp ce partile de
view si controller au nevoie fiecare de o
referinta model la model si referinte
reciproce, una catre cealalta.

Clasificarea Interactiunilor

directe(liniicontinue):apeluridirectedemetodealeobiectelor.De
exemplu:controller-ulapeleazametodealemodeluluipentrua-lactualiza
inurmaactiunilorutilizatorului
indirecte(liniiintrerupte):generareasicaptareaevenimentelor.De
exemplu:modelulgenereazaunevenimentinmomentulunei
modificari,cepoateficaptatdeview,faracamodelulsafieconstientde
implementareaparticularaaacestuia.

Avantajele utilizarii MVC

Separarea responsabilitatilor

Permite reutilizarea logicii de business in cadrul


aplicatiilor
Pot fi dezvoltate mai multe interfete grafice fara a
afecta celelalte componente
Ajuta dezvoltatorii sa fie focusati la un moment dat
pe un singur aspect al aplicatiei. De exemplu, in
ceea ce priveste interfata grafica, dezvoltatorii vor fi
contrati doar pe aspectul vizual al aplicatiei, fara a
avea legatura cu partea sa de logica.

Dezvoltarea aplicatiei de catre echipe separate in acelasi timp

Ofera o mai buna gestionare a timpului


Permite ca interfata, logica sau input-ul
unei aplicatii sa fie actualizate simultan,
fara a afecta codul sursa.
Permite ca raspunsurile la input-urile
utilizatorului ( controller) sa fie usor
modificate atat in timpul compilarii cat si al
executiei.

Vizualizarea multipla.

Deoarece vizualizarea este separata de


model si nu exista o dependenta directa
intre acestea, interfata utilizator permite
vizualizari multiple ale acelorasi date in
acelasi timp.
De exemplu, mai multe pagini intr-o
aplicatie web pot utiliza acelasi model

Adaptabilitate

Cerintele utilizatorilor pentru interfetele


grafice tind sa se schimbe foarte repede.
Pot exista preferinte diferite pentru culori,
fonturi, dimensiunea ecranului, si capacitatea
de a putea fi utilizate pe dispozitive noi.
Fiindca modelul nu depinde de vizualizare,
adaugarea, modificarea sau inlaturarea
tipurilor de vizualizare nu afecteaza sistemul
in general, aceste schimbari putand fi
realizate in ambele faze, compilare si/sau
executie.

Reutilizarea codului

De scris aiciiiiii

Exemple de utilizare a
sablonului MVC
CodeIgniter este un framework open
source pentru aplicatii web( un set de
instrumente), utilizat pentru a construi
pagini web cu continut dinamic in PHP
(limbaj de scripting de uz general, utilizat la
scara larga).
CodeIgniter este bazat pe sablonul de
proiectare Model View Controller, ce asigura
o separare foarte buna intre partea de
logica si prezentare.

Model

Modelul este reprezentat de structurarea


datelor, putand fi utilizat optional de catre
cei care doresc o utilizare mai traditionala a
sablonului MVC. Modelul va contine clase
utile pentru recuperarea, inserarea si
actualizarea informatiilor din bazele de date
corespunzatoare.

View
Se refera la informatia care este prezentata
utilizatorului.
Utilizarea vizualizarii este optionala.
In mod normal, o vizualizare ar fi o o pagina
web simpla, dar in CodeIgniter, aceasta
poate fi si un fragment dintr-o pagina, cum
ar fi antetul sau subsolul. Poate fi de
asemenea si o pagina RSS, sau orice alt tip
de pagina.

Controller
Controlerele reprezinta partea cea mai
importanta a aplicatiei, deoarece determina
cum ar trebui procesate cererile HTTP,
actionand ca mediator intre model si
vizualizare.
Un controler este, de fapt, un fisier ce
contine o clasa denumita intr-un mod in
care poate fi asociata unui URI( Identificator
Uniform de Resurse).

Multumesc pentru
atentie

S-ar putea să vă placă și