Tehnici de proiectare software - Tipografia
Tehnici de proiectare software - Tipografia
Tehnici de proiectare software - Tipografia
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
• Utilizare<br />
Şablonul Chain Of Responsibility se foloseşte când:<br />
- există un grup <strong>de</strong> obiecte în sistem care pot răspun<strong>de</strong> la acelaşi tip <strong>de</strong> mesaj<br />
- mesajele trebuie folosite <strong>de</strong> unul din obiectele din sistem<br />
- mesajele folosesc mo<strong>de</strong>lul "folosire sau trimitere mai <strong>de</strong>parte", adică unele<br />
mesaje pot fi utilizate la nivelul un<strong>de</strong> au fost recepŃionate sau produse, în timp ce<br />
altele trebuie trimise mai <strong>de</strong>parte către alte obiecte<br />
■ Descriere<br />
Când unele acŃiuni au loc într-un sistem orientat pe obiecte, acestea sunt <strong>de</strong><br />
regulă reprezentate printr-un eveniment sau mesaj. Un astfel <strong>de</strong> mesaj poate lua forma<br />
unei meto<strong>de</strong> care e apelată sau poate fi un obiect al sistemului. Mesajul este apoi<br />
direcŃionat către un alt obiect care poate răspun<strong>de</strong> sau utiliza mesajul. In cele mai<br />
simple cazuri, acelaşi obiect care produce mesajul, răspun<strong>de</strong> la el. De exemplu, un<br />
câmp un<strong>de</strong> se introduce un text poate produce un eveniment ca răspuns la acŃiunea<br />
utilizatorului - cum ar fi tastarea.<br />
In cele mai complexe cazuri, răspunsul la mesaje implică mai multe lucruri.<br />
Un mesaj care cere o modificare în apariŃia interfeŃei grafice cu utilizatorul poate fi<br />
analizat la mai multe niveluri. Dacă cererea este aceea <strong>de</strong> a se modifica aliniamentul<br />
textului dintr-un câmp. componenta însăşi poate răspun<strong>de</strong>. însă o cerere <strong>de</strong><br />
schimbarea a aliniamentului întregului text va fi probabil direcŃionată către nişte<br />
obiecte <strong>de</strong> nivel înalt.<br />
Şablonul Chain Of Responsibility reprezintă un lanŃ pentru mesaje. Dacă un<br />
obiect nu poate răspun<strong>de</strong> la un mesaj primit, el trimite mesajul mai <strong>de</strong>parte către alt<br />
obiect. în mod frecvent, şablonul Chain Of Responsibility este implementat după un<br />
mo<strong>de</strong>l părinte-fiu. Astfel, mesajele ce nu pot fi utilizate <strong>de</strong> către fiu sunt trimise<br />
părintelui, şi aşa mai <strong>de</strong>parte dacă este cazul, până când este întâlnit un obiect ce<br />
poate răspun<strong>de</strong> mesajului. Şablonul Chain Of Responsibility este potrivit pentru o<br />
varietate mare <strong>de</strong> activităŃi efectuate cu o interfaŃă grafică cu utilizatorul orientată pe<br />
obiecte. FuncŃiile <strong>de</strong> ajutor, structura componentelor, formatare şi poziŃionare<br />
cuprinse în interfaŃa grafica pot folosi acest şablon.<br />
■ Implementare<br />
Diagrama <strong>de</strong> clase a şablonului Chain Of Responsability este următoarea:<br />
Client<br />
interface Handler<br />
void handleMessage ()<br />
ConcreteHandler<br />
-Handler handler<br />
+void handleMessageQ<br />
+void handlerMethod()<br />
if(can handle)<br />
handlerMethodQ<br />
else<br />
succesor.handleMessage()<br />
21