Observer Struktura -každodenní použití -základní struktura -vlastnosti

Slides:



Advertisements
Podobné prezentace
Podpora plánování rozvoje sociálních služeb formou založení odborných partnerství CZ.1.04/3.1.03/
Advertisements

Vytvořila:Monika Hradilová. NA ÚVOD… NA ÚVOD… Přátelství a internet…Tohle téma je hodně otevřené. Na celém světě existují milióny sociálních stránek.
Kuchařka na práci s mnohočleny Matematika pro ZŠ Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je David Salač. Dostupné z Metodického portálu.
Strategické otázky výzkumníka 1.Jaký typ výzkumu zvolit? 2.Na jakém vzorku bude výzkum probíhat? 3.Jaké výzkumné metody a techniky uplatnit?
Inf Používání a tvorba databází. Výukový materiál Číslo projektu: CZ.1.07/1.5.00/ Šablona: III/2 Inovace a zkvalitnění výuky prostřednictvím ICT.
Spolupráce mezi výkresy bloky (s atributy) Design center externí reference.
Operační program Vzdělávání pro konkurenceschopnost Název projektu: Inovace magisterského studijního programu Fakulty ekonomiky a managementu Registrační.
Inf Tabulkový procesor - funkce. Výukový materiál Číslo projektu: CZ.1.07/1.5.00/ Šablona: III/2 Inovace a zkvalitnění výuky prostřednictvím ICT.
Programování v jazyce C++ Dědičnost a polymorfismus.
Elektronické učební materiály - II. stupeň Digitální technologie 9 Autor: Bc. Pavel Šiktanc Práce s grafickým programem GIMP Co se všechno naučíme??? Tvorba.
Petr Kielar Seminář o stavebním spoření Část VI: Podmínka rovnováhy a SKLV.
Podnik ro Název projektu: Nové ICT rozvíjí matematické a odborné kompetence Číslo projektu: CZ.1.07/1.5.00/ Název školy: Střední odborná.
Číslo projektuCZ.1.07/1.5.00/ Číslo materiáluVY_32_INOVACE_30-03 Název školy Střední průmyslová škola stavební, České Budějovice, Resslova 2 AutorRNDr.
Základní škola a mateřská škola Lázně Kynžvart Autor: Mgr. Petra Šandová Název: VY_32_INOVACE_5B_INF3_16_ Téma: pro 4.,5.ročník ZŠ, vytvořeno:
Elektronická pošta. Elektronická pošta, zkráceně (často také nesprávně ), je způsob odesílání, doručování a přijímání zpráv přes elektronické.
Principy Základních registrů Ing. Ondřej Felix, CSc.
Síťové operační systémy OB21-OP-EL-KON-DOL-M Orbis pictus 21. století.
NÁZEV ŠKOLY:SOŠ Net Office, spol. s r.o. Orlová Lutyně AUTOR: Mgr. Jana Kijonková NÁZEV: Podpora výuky v technických oborech TEMA: Relační databáze – závěrečné.
[Název výrobku] Marketingový plán [Jméno]. Přehled trhu Minulost, současnost a budoucnost trhu –Uveďte přehled změn podílu na trhu, vedoucích pozic, aktérů,
MUDr. Milan Kubek Prezident ČLK. Smysl a cíl Hledání pokud možno spravedlivého kompromisu mezi „neomezenými“ možnostmi lékařské vědy a omezenými finančními.
Seminář o stavebním spoření
Název školy: Svobodná základní škola,o. p. s
Jak se UČIT K MATURITĚ? Motivace, koncentrace, paměť.
Výukový materiál zpracován v rámci projektu
Systémové databáze v SQL Serveru
MATEMATIKA Funkce.
COM – Práce s objektovým modelem jiné aplikace
Veřejná správa, Regionální rozvoj Litoměřice Jan Jůna 2012
Seminář pro příjemce OPVK
Webová aplikace MS OLOMOUC.
State 1.
Příběh 2 oblázků s obrázky z Číny!
Algoritmizace - opakování
Financováno z ESF a státního rozpočtu ČR.
VY_32_INOVACE_
Dostupné z Metodického portálu ; ISSN
Inf Ovládání operačního systému
JEdit Open source programování – – Marek Bílý.
Configuration Patterns
Abstract Factory.
Hotelová škola, Obchodní akademie a Střední průmyslová škola Teplice,
1. Jak si rychle a jednoduše upravit vzor
Makro v Excelu.
Informatika pro ekonomy přednáška 8
Digitální učební materiál
GDPR: ochrana osobních údajů
Typy Oken, Zobrazení a Konfigurace
Materiál byl vytvořen v rámci projektu
Remote login.
Kvalita a bezpečí jako hlavní principy k úspěšné a efektivní akreditaci Gabriela Franková.
Název školy: Autor: Název: Číslo projektu: Název projektu:
Teorie chyb a vyrovnávací počet 1
Word Okraje WordArt Pozadí Vodoznak. Word Okraje WordArt Pozadí Vodoznak.
Přednášky z Distribuovaných systémů
Digitální učební materiál
DIGITÁLNÍ UČEBNÍ MATERIÁL
PŘIHLAŠOVACÍ SYSTÉM CK KRISTOF
AUTOR: Mgr. Hana Vrtělková NÁZEV: VY_32_INOVACE_M_06_Hra 3 TEMA: Hra 3
Název: VY_32_INOVACE_ICT_7B_12B Škola:
Předmět: Informatika Ročník: VI. Tématický celek: Základy práce s PC
Word Základy Wordu. Word Základy Wordu Ročník: 6 Předmět: Informační a komunikační technologie Učitel: Vojtěch Novotný Téma: Základy Wordu Ověřeno.
Lineární funkce a její vlastnosti
Informační systém základních registrů
Seminář o stavebním spoření
Grafy kvadratických funkcí
Hodnocení, realizace a kontrolní etapa
Hromadné dokumenty opakující se pro kolekci osob
Observer Struktura -každodenní použití -základní struktura -vlastnosti
Bridge.
Digitální učební materiál
Transkript prezentace:

Observer Struktura -každodenní použití -základní struktura -vlastnosti -implementace -možnosti v C#/WPF 1 1

Observer – idea Follow(sledování) na Twitteru Pokud někoho sleduji, dostanu upozornění vždy, když přidá příspěvek Můžu sledovat více lidí Můžu mít více odběratelů Sledování můžu kdykoliv zrušit a později obnovit Observer funguje úplně stejně

Observer – idea Sledování na Twitteru Upozornění = Update() Follow = Attach() Unfollow = Detach() subject Observer je o propojení dvou druhů objektů – subject a observer observer

Každodenní použití v C#/WPF Subject push - potencialne neefektivni, obzvlast pri slozitejsich datech Attach Detach 4 4

Observer – struktura Subject (Publisher) ConcreteSubject Seznam observerů Rozhraní pro přidání/odebrání ConcreteSubject Uchovává a mění stav Notifikuje své observery Observer (Subscriber) Rozhraní pro aktualizace stavu ConcreteObserver Reference na ConcreteSubject Uchovává potřebný stav Implementuje update Interface Interface Jedno z možných variant, další možnosti na následujících slajdech 5 5

Vzájemná spolupráce – zajímavější Observer vyvolá změnu Sám se zatím nemění ! Změna stavu až po notifikaci Oberver vyvolal zmenu v subjektu – vi, jakou zmenu vyvolal, takze neni potreba aby byl notifikovanej. Ale nebudeme zeslozitovat fungovani – a proto musi pockat az ho subjekt notifikuje o zmene kterou on sam vyvolal. Stejně pro ostatní observery 6 6

Observer – vlastnosti Návrhový vzor Observer – jak funguje Závislost 1:n Notifikace o změnách stavu Subjektu Observeři reagují Důsledek = rozdělení zodpovědnosti, odlehčení funkcionality Decoupling/loose coupling Menší, znovu použitelné objekty Redukuje závislosti Netřeba modifikovat subjekt pro přidáváni observerů Observery lze přidávat/odebírat za běhu Vztah mezi subjektem a observery je jasně pochopitelný Lepší čitelnost kódu/návrhu Sledování změn objektu Objekt změní stav  ostatní objekty zareagují Bez přímé vazby mezi objekty Subjekt neví o observerech Nezajímá nás počet reagujících objektů 7 7

Observer – detaily implementace Posílání informace o změně Push model Subject v Updatu posílá data, která se změnila Ušetří tím práci Observerům Pull model Subject v Updatu neposílá nic observer si sám vyžádá potřebná data od subjektu Možnosti jak předat informaci o změně Observerům push - potencialne neefektivni, obzvlast pri slozitejsich datech 8 8

Observer – detaily implementace Více sledovaných subjektů Už nestačí metoda Update() Observer totiž neví, který subjekt update vyvolal Vyřeší se předáním subjektu jako argument Řešení notifikace Ve všech funkcích měnících stav (klasika) atomické, může být ale neefektivní  Na vhodném místě (až po sekvenci změn) Chtěli bychom aby tato sekvence byla atomická Je potřeba zařídit něco jako transakce  Větší náchylnost k chybám 9 9

Kliknuti = Co me zajima (aspekt) Observer – detaily implementace Sledování pouze specifických změn Observer specifikuje, jaký druh změn jej zajímá document.getElementById("myBtn").addEventListener("click", function(){     document.getElementById("demo").innerHTML = "Hello World"; }); Přidání informace o druhu změny do metody update NotifyCollectionChangedAction – Add, Remove, Replace, Move, Reset Různé metody update pro různé změny WPF Button – Click, MouseEnter, MouseLeave, … Button = subject Kliknuti = Co me zajima (aspekt) Funkce = observer push - potencialne neefektivni, obzvlast pri slozitejsich datech 10 10

Observer – problémy Pozor na rušení objektů Můžou vznikat neplatné reference Může docházet k Memory leaku delegate v C# drží referenci na příslušný objektu Neznámá cena změny subjektu I malá změna Subjectu může stát hodně času Problém například v GUI – okno zamrzne 11 11

Observer – proč se hodí v následujících případech Twitter / Facebook funkcionalita sledování/followers Jiným způsobem ani udělat nejde GUI framework Šlo by přece udělat přes dědičnost ... Takze jaka je situace, kdyz programuju to tlacitko. 12 12

Button - situace Button Programuji GUI framework a chci mít hotové tlačítko Funkční, otestované Dopředu vím, že při kliknutí bude programátor chtít, aby se něco dělo Nějaké objekty budou nějak reagovat Např. uloží něco do souboru, pošlou něco po síti, atd. Chci dovolit více objektům reagovat na kliknutí tlačítka Takze jaka je situace, kdyz programuju to tlacitko. 13 13

Button – přes dědičnost SaveFileButton OpenFileButton ExecuteQueryButton Jedna moznost je dedicnost, ale ma nevyhody ShowResultsButton 14 14

Configuration Manager Button – přes observer Button File Manager Database Updater Zaridi se poslani zpravy. Nyni je spojeni objektu volne. Navic kdyz umim poslat zpravu file managerovi tak ji umim poslat I komukoliv jinemu. Configuration Manager 15 15

Button – dědičnost vs observer Pro každé tlačítko bude potřeba nová odvozená třída V ní se přepisuje nějaká metoda Reagující objekty s ní budou silně svázané Přidávání/odebírání reagujících objektů = změna tlačítka Změna reagujících = změna tlačítka Nelze hezky přestat reagovat na klikání tlačítka Nelze hezky po nějaké době začít reagovat na klikání tlačítka Nemá tyto problémy Jake jsou vyhody jednotlivych pristupu? 16 16

Observer – advanced - Change Manager Zapouzdření vazeb subject-observers Vhodné při složitějších vazbách (m:n, kaskády, zacyklení) Př: observery jsou notifikovány až potom, co všechny svázané subjecty změnily svůj stav Hlavní úkoly Mapování subjectu a jeho observerů (kdo koho) Definice aktualizační strategie (kdy a jak) Na žádost subjectu aktualizuje závislé observery 17 17

Observer – Change Manager Jednoduchý Change Manager Pouze projde seznam observerů a provede update Sofistikovaný Change Manager Používá složitější strategii Předchází nechtěným aktualizacím 18 18

Observer – příklady použití User interface aplikace/frameworky Oddělení dat od GUI Klient – server aplikace Notifikace klientů při změně na serveru Klienti si vyžádají údaje při notifikaci Konkrétní použití MVC (Model/View/Controller) - Model ≈ subject, View ≈ observer MFC - architektura Document/View java.util.Observable, java.util.Observer Java Swing - použití pro event management (EventListener, ...) Javafx, WinForms, javascript listenery, ... Java ObservableList, ListView, TableView, ... C#/WPF Uvnitř operačního systému Windows 19 19

Používání v C#/WPF – rozhraní pro objekty Jméno proměnné která se změnila Reference na Subject

Používání v C#/WPF – rozhraní pro objekty Oznámím změnu stavu Použít Setter!!!

O aktualizaci UI se stará WPF Používání v C#/WPF – rozhraní pro objekty O aktualizaci UI se stará WPF

WPF se stará o přidávání / odebírání položek v UI Používání v C#/WPF – rozhraní pro kolekce WPF se stará o přidávání / odebírání položek v UI

Observer - související vzory Mediator - ChangeManager jako prostředník mezi subjecty a observery Často implementovaný jako Singleton 24 24