Observer (pozorovatel)

Návrhové vzory Observer (pozorovatel)

Návrhový vzor Observer umožňuje objektu spravovat řadu pozorovatelů, kteří reagují na změnu jeho stavu voláním svých metod.

Motivace

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 zbytečně zesložiťovalo a znepřehledňovalo. Díky Observeru může být uživatel od těchto objektů odstíněn.

Vzor

Pozorovaný objekt je ve vzoru označen jako Předmět. Ten je abstraktní třídou a obsahuje metody pro přidání, odstranění a zavolání pozorovatelů. Pozorovatel je objekt závislý na předmětu. Ten 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ů.

Návrhový vzor Observer

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ž je jejich stav opět konzistentní.

Závěrem

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


 

  Aktivity (2)

Článek pro vás napsal David Čápka
Avatar
Autor pracuje jako softwarový architekt a pedagog na projektu ITnetwork.cz (a jeho zahraničních verzích). Velmi si váží svobody podnikání v naší zemi a věří, že když se člověk neštítí práce, tak dokáže úplně cokoli.
Unicorn College Autor se informační technologie naučil na Unicorn College - prestižní soukromé vysoké škole IT a ekonomie.

Jak se ti líbí článek?
Celkem (6 hlasů) :
55555


 


Miniatura
Předchozí článek
Facade (fasáda)
Miniatura
Všechny články v sekci
Návrhové vzory
Miniatura
Následující článek
Strategy (strategie)

 

 

Komentáře

Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zatím nikdo nevložil komentář - buď první!