29.04.2013 Views

Tehnici de proiectare software - Tipografia

Tehnici de proiectare software - Tipografia

Tehnici de proiectare software - Tipografia

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!