- Structurare site
- Design patterns
- Principii webdesign
- CMS
- LMS
Va rugam reveniti!
Design patterns
Design patterns (proiectarea modelelor) sunt un un set de solutii ce pot
fi aplicate diverselor probleme intalnite frecvent in programarea
orientata pe obiect.
Teoretic, aceste modele nu au legatura cu codul scris de programator.
Sunt solutii de eficientizare a unor probleme intalnite frecvent, niste
indicatii pe care programatorul trebuie sa le transpuna in limbajul de
programare folosit.
Ne vom referi in continuare la aceste modele implementate limbajul Java.
Modelul Singleton permite accesul la o singura resursa care nu va fi niciodata duplicata, dar care trebuie facuta disponibila in orice moment al executiei aplicatiei.
Front ControllerSe doreste centralizarea punctului de acces a componentei ce trateaza
cererile la nivelul de prezentare.
Sistemul necesita un punct de acces unde componenta responabila cu
tratarea cererilor sa aibe acces centralizat. Fara acest punct de acces
central, codul de control care este comun pentru mai multe cereri, este
duplicat in mai multe locuri. Insa atunci cand codul de control este
amestecat cu cel pentru crearea interfetei, aplicatia devine nemodulara
si coeziva. In plus, faptul de a avea codul de control in mai multe
locuri il face dificil de intretinut, iar o simpla modificare asupra
codului presupune parcurgerea mai multor parti ale aplicatiei.
Obiectivele Front Controller Pattern-ului:
- evitarea duplicarii codului corespunzator controlului logic al aplicatiei;
- aplicarea unei logici comune mai multor cereri;
- separarea in cadrul sistemului a procesarii logice de partea de vizualizare;
- centralizarea punctului de acces a controlului in sistem.
Front Controller-ul este utilizat ca punct initial de contact dintre componentele responsabile cu tratarea cererilor si cererile in sine. Front Controller-ul centralizeaza astfel, controlul logic al aplicatiei (site-ului) care altfel ar putea fi duplicat - in diverse puncte de acces, si administreaza activitatea de tratare a cererilor.
Datorita centralizarii controlului logic, acest Design Pattern ajuta la reducerea logicii incluse direct in partea de interfata. De exemplu, pentru o pagina JSP, aplicarea acestui Design Pattern, reduce o mare cantitate de cod Java, numita scriptlet, in cadrul paginii.
Acest Design Pattern este asemnator cu Intercepting Filter, descris mai jos, deoarece, amandoua refactorizeaza si consolideaza parti comune din logica nivelului de prezentare a aplicatiei. Marea diferentiere dintre cele doua ar fi faptul ca, Intercepting Filter produce o cuplare slaba a filtrelor procesoare inlantuite, precum si strategii importante pentru executia pre si post procesarii. Centralizarea controlului prin intermediul Front Controller precum si reducerea dimensiunilor interfetei aplicatiei si procesarii logice, promoveaza reutilizarea codului la nivelul tratarii cererilor, reducand duplicarea. In afara aplicatiilor triviale, folosirea Front Controller este de preferat in locul inserarii de cod in mai multe locuri din interfata aplicatiei.
Deobicei, Front Controller se foloseste impreuna cu Design Pattern-ul Application Controller, care este responsabil cu managementul actiunii si vizualizarii(view).
- Managementul actiunii se refera la localizarea si dirijarea catre o actiune specifica care va trata cererea respectiva.
- Managementul vizualizarii se refera la identificarea si expedierea catre vizualizarea(view-ul) corespunzatoare. Chiar daca acest comportament poate fi rezolvat cu Front Controller, este de preferat partitionarea sa in clase separate prin folosirea Application Controller, deoarece ofera modularitate, mentanabilitate si reutilizare.
Cu toate ca tratarea cererilor inrudite este centralizata, nu se impune o limitare in sistem a numarului de componente ce rezolva cererile. Comportamentul cel mai intalnit este de a avea un singur Front Controller responsabil cu tratarea cererilor, insa, o aplicatie web poate avea mai multe controller-e, fiecare mapat unui anumit set de servcii distincte.
Cea mai utilizata abordare a Front Controller este in combinatie cu Application Controller, folosind strategia Command si Controller. Deasemeni este posibil sa se invoce direct din controller un obiect auxiliar (helper) cu anumite motode puternic tipizate ce are ca efect evitarea Application Controller-ului.
Imagine:FrontControllerClassDiagram.gif Intercepting FilterSe intercepteaza si manipuleaza cererea (inclusiv raspunsul) inainte ca cererea sa fie procesata.
bla bla
bla2222