Vianoce v ITnetwork sú tu! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

Observer (pozorovateľ)

Návrhový vzor Observer umožňuje objektu spravovať rad pozorovateľov, ktorí reagujú na zmenu jeho stavu volaním svojich metód.

Motivácia

Vysporiadanie sa so závislosťami je jeden z hlavných problémov pri návrhu softvéru. Veľmi často nám na konkrétnom objekte závisí niekoľko ďalších. Napr. inštancie používateľa v desktopovej aplikácii zmení svoju adresu, na túto zmenu však musí byť upozornené všetky otvorené formuláre a ďalšie dialógy, v ktorých meno figuruje. Ďalej je potrebné upozorniť externý register, ktorý je využívaný pri zasielanie katalógov poštou.

Z hľadiska návrhu nie je vhodné touto logikou zaťažovať objekt používateľa. Ten by nemal vedieť o objektoch, ktoré na ňom závisí, pretože by ho to zbytočne zesložiťovalo a znepřehledňovalo. Vďaka Observeru môže byť užívateľ od týchto objektov odtienený.

Vzor

Pozorovaný objekt je vo vzore označený ako Predmet. Ten je abstraktné triedou a obsahuje metódy pre pridanie, odstránenie a zavolanie pozorovateľov. Pozorovateľ je objekt závislý na predmete. Ten dedí z abstraktné triedy Observer (pozorovateľ) a tak implementuje rozhranie, ktoré ho umožňuje na zmenu predmetu upozorniť. Predmet si na abstraktné úrovni spravuje kolekciu svojich pozorovateľov.

Návrhový vzor Observer - GOF - Vzory správania

Pri zmene stavu na sebe predmet zavolá metódu upozornit() ao viac sa nestará. Metóda je implementovaná v abstraktnej triede Predmet a proiteruje kolekciu jeho pozorovateľov. Na nich je zavolaná metóda obnovit(), čím je ich stav opäť konzistentné.

Záverom

Vzor sa využíva v systémoch, ktoré sú založené na spracovanie udalostí.


 

Všetky články v sekcii
GOF - Vzory správania
Článok pre vás napísal David Hartinger
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
David je zakladatelem ITnetwork a programování se profesionálně věnuje 15 let. Má rád Nirvanu, nemovitosti a svobodu podnikání.
Unicorn university David sa informačné technológie naučil na Unicorn University - prestížnej súkromnej vysokej škole IT a ekonómie.
Aktivity