04.11.2014 Views

elektronická verzia publikácie - FIIT STU - Slovenská technická ...

elektronická verzia publikácie - FIIT STU - Slovenská technická ...

elektronická verzia publikácie - FIIT STU - Slovenská technická ...

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.

158 Štúdie vybraných tém programových a informaných systémov<br />

Decorator<br />

Vzor Decorator slúži na dynamické pridávanie zodpovednosti triedam. Predstavuje flexibilnú<br />

alternatívu ku klasickému rozširovaniu systému pomocou pridávania potomkov do<br />

hierarchií dedenia. Jeho idea spoíva v definovaní tried, ktorých objekty majú by dekorovatené<br />

a dekorátorov, ktoré majú rozširova funkcionalitu tried (dekorova triedy). Princíp<br />

dekorovatenosti spoíva v postupnom volaní metód rozširujúcich dekorátorov v rámci<br />

volania pôvodnej metódy.<br />

Ke sa opätovne pozrieme na vzor Decorator z pohadu modelovatenosti, môžeme<br />

si všimnú, že prioritou je v rámci modelu definova dekorovatené triedy a ich dekorátory.<br />

Forma, ako tieto triedy konkrétne spolupracujú za úelom dosiahnutia svojho ciea, pre<br />

nás nie je v danom momente podstatná.<br />

Modelova vzor sme sa rozhodli podobným spôsobom ako v prípade vzoru Composite:<br />

definovaním prvku predstavujúcim inštanciu vzoru a triedami predstavujúcimi dekorátory<br />

a dekorovatené triedy. Prvok predstavujúci samotný vzor navyše obsahuje definíciu<br />

metódy, ktorej funkcionalita môže by v rámci inštancie vzoru dekorovatená. Obrázok<br />

5-21 zachytáva ukážku vyššieho modelu vzoru Decorator pracujúceho s jednou dekorovatenou<br />

triedou ConcreteComponent a dvomi dekorátormi DecoratorA a DecoratorB.<br />

Obrázok 5-21. PIM so vzorom Decorator.<br />

Obrázok 5-22 zachytáva výsledok transformácie modelu z obrázku 5-21 do bežného modelu<br />

na úrovni OO návrhu.<br />

Obrázok 5-22. PSM so vzorom Decorator.

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

Saved successfully!

Ooh no, something went wrong!