Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 12 - Observer (pozorovatel)

V minulé lekci, Bridge, jsme si ukázali návrhový vzor Bridge, který odděluje měnící se rozhraní od měnící se implementace tohoto rozhraní.

V dnešním tutoriálu Návrhové vzory GoF si představíme návrhový vzor Observer umožnující objektu spravovat řadu pozorovatelů, kteří reagují na změnu jeho stavu voláním svých metod.

Observer patří do návrhových vzorů chování. Mezi ně dále patří například Strategy, Template Method, State, Memento a další.

Motivace použití vzoru Observer

Vypořádání se se závislostmi je jeden ze stěžejních problémů při návrhu softwaru. Velmi často nám na konkrétním objektu závisí několik dalších. Např. instance uživatele v desktopové aplikaci změní svou adresu. Na tuto změnu však musí být upozorněny všechny otevřené formuláře a další dialogy, ve kterých jméno figuruje. Dále je třeba upozornit externí registr, který je využíván při zasílání katalogů poštou.

Z hlediska návrhu není vhodné touto logikou zatěžovat objekt uživatele. Ten by neměl vědět o objektech, které na něm závisí, protože by ho to dělalo zbytečně složitým a nepřehledným. Díky vzoru Observer může být uživatel od těchto objektů odstíněn.

Specifikace vzoru Observer

Pozorovaný objekt je ve vzoru označen jako Predmet. Ten je abstraktní třídou a obsahuje metody pro přidání, odstranění a zavolání pozorovatelů. Observer je objekt závislý na předmětu. Predmet dědí z abstraktní třídy Observer (pozorovatel) a tak implementuje rozhraní, které ho umožňuje na změnu předmětu upozornit. Předmět si na abstraktní úrovni spravuje kolekci svých pozorovatelů. UML diagram návrhového vzoru Observer je následující:

Návrhový vzor Observer - Návrhové vzory GoF

Při změně stavu na sobě předmět zavolá metodu upozornit() a o více se nestará. Metoda je implementována v abstraktní třídě Predmet a proiteruje kolekci jeho pozorovatelů. Na nich je zavolána metoda obnovit(), čímž se jejich stav stane opět konzistentní.

Vzor se využívá v systémech, které jsou založené na zpracování událostí.

V následujícím kvízu, Kvíz - Flyweight, Composite, Bridge, Observer ve Vzory GOF, si vyzkoušíme nabyté zkušenosti z předchozích lekcí.


 

Předchozí článek
Bridge
Všechny články v sekci
Návrhové vzory GoF
Přeskočit článek
(nedoporučujeme)
Kvíz - Flyweight, Composite, Bridge, Observer ve Vzory GOF
Článek pro vás napsal David Hartinger
Avatar
Uživatelské hodnocení:
30 hlasů
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 se informační technologie naučil na Unicorn University - prestižní soukromé vysoké škole IT a ekonomie.
Aktivity