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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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

Obrázok 1-10. Štruktúra vzoru Pozorovate.<br />

− KonkrétnyPozorovate – implementácia rozhrania Pozorovate. Metóda<br />

aktualizuj() implementuje vyžadovanú reakciu na zmenu stavu predmetu pozorovania,<br />

− Subjekt – deklaruje rozhranie pre pripojenie a odpojenie entít Pozorovate<br />

a pre notifikáciu o zmene stavu predmetu pozorovania,<br />

− KonkrétnySubjekt – rozširuje triedu Subjekt, ím dedí funkcionalitu pripájania<br />

a odpájania entít Pozorovate. Metódy, ktoré umožujú zmenu vnútorného stavu<br />

objektu KonkrétnySubjekt (tzv. mutator alebo tiež „setter“ metódy), volajú metódu<br />

notifikujPozorovatele() pre notifikáciu pozorovateov o zmene.<br />

1.4.3 Dôsledky<br />

Výsledkom použitia vzoru je nízka zviazanos entít, pretože väzba medzi predmetom<br />

pozorovania a pozorovateom je zredukovaná len na zoznam pozorovateov, ktoré predmet<br />

pozorovania pozná. To vedie k znovupoužitenosti predmetov pozorovania bez nutnosti<br />

znovupoužitia pozorovateov.<br />

1.4.4 Implementácia<br />

Implementácia vzoru spoíva vo využití princípu tzv. callback funkcií. Callback funkcia je<br />

as kódu, ktorá je odovzdaná jednou entitou druhej, aby bola vykonaná neskôr v prípade<br />

potreby.<br />

Pri implementácii môžeme narazi na niekoko problémov, resp. potenciálnych prekážok.<br />

Je potrebné da pozor na „prehnané“ používanie vzoru, ktoré môže vyústi do nekontrolovatených<br />

cyklov. Každý pozorovate môže by zárove predmetom pozorovania,<br />

o môže vies k nežiaducej zložitosti, a to aj napriek jednoduchej logike, ktoré od entít<br />

požadujeme.

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

Saved successfully!

Ooh no, something went wrong!