IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

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