Mediator. Mediator - motivace  FontDialog  závislosti mezi jednotlivými ovládacími prvky jsou netriviální.

Slides:



Advertisements
Podobné prezentace
© 2000 VEMA počítače a projektování spol. s r. o..
Advertisements

(instance konkrétní třídy)
Stručný úvod do UML.
Seminář C++ 5. cvičení Dědičnost Ing. Jan Mikulka.
Přednáška č. 3 Normalizace dat, Datová a funkční analýza
1 Small Business Windows XP Professional Platforma pro zpracování zpráv (Messaging Platform) 6 září, 2001.
Přednáška č. 5 Proces návrhu databáze
Uživatelská rozhraní Uživatelská rozhraní 9. cvičení.
Čtvrté cvičení Objektové programování Objektový model v Javě
Chain of responsibility Martin Malý prezentace na předmět Návrhové vzory (PRG024) na MFF UK
Definování prostředí pro provozování aplikace dosud jsme řešili projekt v obecné rovině aplikace bude ovšem provozována v konkrétním technickém a programovém.
State. State – kontext a problém Kontext  chování objektu má záviset na jeho stavu, který se typicky mění za běhu Neflexibilní řešení  metody obsahují.
Páté cvičení Dědičnost Interface Abstarktní třídy a metody
Adapter. Adapter – pojem Součástka navržená k propojení dvou „nekompatibilních“ zařízení Definice slova podle Cambridge Advanced Learner's Dictionary:
Objektové programování
Rozšíření jednouživatelské verze IS na víceuživatelskou Prezentace Diplomové práce Autor : Libor Tomášek Spoluautoři : Pobucký M., Drábek L. Vedoucí :
Jedenácté cvičení Vlákna. Java cv112 Vlákna Operační systém Mutitasking – více úloh se v operačním programu vykonává „současně“ Java Multithreading -
Vypracoval: Ondřej Dvorský Třída: VIII.A
Strategy. Strategy – „All-in-1“ na začátek class AStrategy { public: virtual void Algorithm()=0; protected: AStrategy(); }; class SpecificStrategy: public.
Facade [f ə ˈ s ɑː d]f ə ˈ s ɑː d. Facade Před: Po:
Informatika pro ekonomy II přednáška 10
Seminář C++ 4. cvičení Objekty Ing. Jan Mikulka. Co je objekt ► obraz třídy i instance ► třída – definovaná za pomocí klíčového slova class ► instance.
Composite [kompozit, ne kompozajt]. Composite Výslovnost  kompozit, ne kompozajt Účel  Popisuje, jak postavit hierarchii tříd složenou ze dvou druhů.
6. cvičení Polymorfismus
Memento. Obnovení operačního systému ( Windows | Linux...) Všichni víme, co jsou transekce v databázi Memento – zálohování databáze.
Představujeme Ensemble Michal Tomek. Na tomto obrázku vidíte, co systému Ensemble chybí:
Ing. Jan Mittner Životní cyklus požadavku 2. Moduly 3. Pluginy 4. Jak řešit komponenty typu menu 5. atd. 2.
KIV/PPA1 cvičení 8 Cvičící: Pavel Bžoch. Osnova cvičení Objekty v Javě Třída Konstruktor Metody Metody a proměnné třídy x instance Program sestávající.
Algoritmizace a programování Objektově orientované programování - 16 Mgr. Josef Nožička IKT Algoritmizace a programování
Systémové pojetí hospodářské organizace 1 ECM – Řízení podnikového obsahu (Zdroj: Gála, Pour, Toman: Podniková informatika. Praha: Grada 2006) řízení podnikového.
Návrhový vzor Factory v JAVA API Martin Kot Katedra informatiky VŠB – Technická univerzita Ostrava
IB111 Programování a algoritmizace
Virtual Reality Toolbox 2.0
Firewall.
Dědičnost - inheritance dědičnost je jednou z forem znovupoužitelnosti dědičnost je jednou z forem znovupoužitelnosti B A Třída A je předkem třídy B Třída.
Portál veřejné správy © 2002 IBM Corporation ISSS 2003 ePUSA – elektronický portál územních samospráv Krajský úřad Plzeňského krajeMinisterstvo vnitra.
organizační struktury Implementace EOS III na Olomouckém kraji Pro:Krajský rok informatiky 2005 Autor:Jan Kadlec Datum:
Metodika objektového přístupu při tvorbě překladačů. Marek Běhálek Informatika a aplikovaná matematika FEI VŠB-TU Ostrava.
Šesté cvičení Výjimky Balíky.
Databázové systémy Informatika pro ekonomy, př. 18.
Decorator. Rozšiřuje objekty o dodatečné chování  rozšiřuje konkrétní objekty, ne třídy  rozšiřuje objekt dynamicky, tj. za běhu Upřednostňuje kompozici.
Klomfar Petr.  Adresářová služba  specializovaná databáze optimalizovaná pro čtení a vyhledávání.  popisující objekt pomocí atributů. Na rozdíl od.
Delphi a databáze MS SQL Server.
OPERAČNÍ SYSTÉMY.
Service layer. Service layer – úvod Problém  Vytvoření API aplikace  Odstínění bussiness logiky a transakčního chování od zbytku aplikace  Kam s aplikační.
Observer Martin Dráb Návrhové vzory, Co to je?  Definuje závislost 1:N mezi objekty  Závislé objekty jsou informovány o změně stavu  Konzistentní.
IEC 61850: Soubor norem pro komunikaci v energetice
Strategy. Motivace Různé algoritmy pro stejnou akci Hromada kódu v mnoha podmínkách Důsledky  Komplexnost  Špatná čitelnost  Těžká správa kódu  Těžka.
Template Method. Motivační příklad – reálný svět Čaj 1) Uvař vodu 2) Dej do hrnku sáček čaje 3) Zalij hrnek 4) Přisyp cukr a vymačkej citrón Káva 1) Uvař.
Stanice v síti učební texty pro deváté ročníky ZŠ.
PROCES UČENÍ V TEAMBUILDINGU
Klient pro správu databází MySQL 1 Klient pro správu databází MySQL Zbyněk Munzar České vysoké učení technické v Praze Fakulta elektrotechnická.
Composite “ Spojuj a panuj ”. Zakladní vlastnosti Výslovnost  kompozit, ne kompozajt Účel  Popisuje, jak postavit strukturované hierarchie tříd, v níž.
Orbis pictus 21. století Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky Systémy moderních elektroinstalací.
Praha & EU: Investujeme do vaší budoucnosti Evropský sociální fond Gymnázium, Praha 10, Voděradská 2 Projekt OBZORY MVC vs MVP.
Úvod do C# - OOP Jaroslav BURDYS 4IT.
Mediator Několik slov o překladu slova do češtiny (prostředník, zprostředkovatel), vyzdvihnutí počeštěného slova mediátor. 1 1.
Pattern Oriented Software Architecture
Návrhový vzor Flyweight
Lazy load Použity informace z knihy Patterns of Enterprise Application Architecture od M. Fowlera Jan Sládek.
Informatika pro ekonomy přednáška 8
Strategy „Definujte rodinu algoritmů, zapouzdřuje je aby byly vzájemně zaměnitelné. Strategie umožňuje, aby se algoritmus nebyl závislý na klientech, kteří.
Bridge.
C# přehled vlastností.
Mikroservisy Petr Paloch.
Přednášky z Distribuovaných systémů
Decorator.
Monitor Object 1.
Mediator Několik slov o překladu slova do češtiny (prostředník, zprostředkovatel), vyzdvihnutí počeštěného slova mediátor. 1 1.
Composite “Spojuj a panuj”.
Transkript prezentace:

Mediator

Mediator - motivace  FontDialog  závislosti mezi jednotlivými ovládacími prvky jsou netriviální

Mediator - motivace  „Naivní“ přístup  každá komponenta obdrží ukazatele na „kolegy“, se kterými komunikuje  chování je rozprostřeno mezi jednotlivými komponentami anEntryField listbox styleEntryField listbox styleListBox entryField preview aListBox entryField preview styleBox previewField

 Řešení pomocí Mediatoru  každá komponenta obsahuje pouze ukazatel na jeden objekt - mediátor  v něm je soustředěno chování celého dialogového okna Mediator - motivace má přehled o jednotlivých widgetech, koordinuje interakce anEntryField director styleEntryField director styleListBox director aListBox director previewField director aFontDialogDirector

 uživatel po zobrazení dialogu změní výběr listboxu  po ohlášení změny mediátor zjistí aktuální položku a předá jí do vstupního políčka  Listbox a entry field o sobě vůbec neví  o tom, že se má po změně někam něco vyplnit, se rozhoduje v mediátoru  Interakce zprostředkovaně přes jeden objekt  jednodušší změna chování Mediator - chování čas

 Struktura Mediator - struktura rozhraní pro komunikaci kolegů znají pouze svého mediátora veškerou komunikaci směřují na něj implementuje společné chování, zná a koordinuje kolegy

Mediator - účel  Účel  zapouzdření chování systému objektů  ruší přímou vazbu mezi komponentami v rámci systému (Loose coupling)  umožňuje měnit interakci objektů nezávisle na jejich vnitřní implementaci  zjednodušuje program  Není to proti principům OOP?  distribuce chování mezi jednotlivými objekty je přece většinou vítaná  ale jen do té doby, dokud nejde proti znovupoužitelnosti  slévání do monolitu

Mediator - použití  Kdy sáhnout po mediátoru?  skupina objektů má komunikovat definovaným, ale složitým způsobem  závislosti mezi objekty jsou složitě strukturované nebo těžko pochopitelné  znovupoužití objektu je obtížné, jelikož spolupracuje s mnoha jinými objekty  chování distribuované mezi mnoho objektů bylo mělo být upravitelné bez nutnosti vytváření mnoha podtříd

Mediator - důsledky  Výhody a omezení  omezuje odvozování mnoha podtříd  původně distribuované chování soustřeďuje na jedno místo  ostatní objekty je možné použít bez nutnosti úprav  ruší vazby 1:1 mezi jednotlivými kolegy  kolegové o sobě navzájem nevědí  každý může být použitý sám o sobě  zjednodušuje ‚protokol‘  n:m interakce nahrazuje 1:m, které jsou jednodušší k pochopení i rozšiřování  zabstraktňuje způsob spolupráce objektů  odděluje kooperaci mezi objekty od jejich samostatného chování  kooperace lze řešit na jednom místě  centralizuje řízení  samotný mediátor bude většinou složitý

Mediator - implementace  Implementace  varianty  abstraktní mediátor  přímo 1 konkrétní mediátor  komunikace kolega-mediátor  při ‚zajímavé‘ události  aktivně, když kolega něco potřebuje  mediátor propaguje událost k dalším kolegům  implementace komunikace  speciální notifikační interface mediátora  pomocí patternu Observer  kolegové vystupují jako subjekty, kdykoliv změní stav, upozorní observera-mediátora  rozumná extrakce funkcionality - pozor na „boží“ objekty  na mediátora není dobré převádět vše

Mediator - implementace public abstract class StockExchangeSystem { public void tellIntention(type, item, quantity, trader) { partner = findPossiblePartner(type, item, quantity, trader); if (partner.interestedIn(type, item, quantity)) { processTransaction() } public abstract int getExpectedPrice(item); … protected abstract Trader findPossiblePartner(type, item, quantity, trader); } Rozhraní kolega → mediátor public abstract class Trader { protected StockExchangeSystem exchange; public Trader(StockExchangeSystem exchange) { this.exchange = exchange; } protected abstract boolean interestedIn(type, item, quantity); }  Abstraktní třídy Rozhraní mediátor → kolega

Mediator - implementace  Konkrétní chování v potomcích public class PersistentStockExchangeSystem extends StockExchangeSystem { protected Trader findPossiblePartner(type, item, quantity, trader) { // Prohledej databazi a zjisti partnera } public int getExpectedPrice(item) { // Vrat z databaze cenu itemu } public class GreedyCornTrader extends Trader { public GreedyCornTrader(StockExchangeSystem exchange) { super(exchange); } protected boolean interestedIn(type, item, quantity) { // Rozhodneme se, zda výzvu přijmeme } public void doSomeTrade() { // Notifikovat SES o tom, co chceme delat… exchange.tellIntention(…, this); // … }

Mediator – použití  Možná použití – počítačový svět  GUI  IM - chatovací server  konkrétní mediátor – chatovací room  kolegové – jednotliví lidé (resp. jejich klienti)  dům budoucnosti – ‚smart home‘  vše řízeno počítačem - mediátor  mnoho různorodých zařízení  lednice, která ví, co koupit  klimatizace, topení, různá teplotní či vlhkostní čidla  alarm, zamykání dveří,  potřeba koordinace  když spustí alarm, zavolá se policie, pošle se sms majiteli  dojde-li mléko, je potřeba ho objednat v e-shopu  paralelní a distribuované výpočty  synchronizace, mezivýsledky  obchodování na burze  řízení letového provozu

Mediator – související NV  Související NV  Facade  fasáda jen abstrahuje skupinu objektů do jednoho rozhraní  vnitřní objekty o ní neví  na žádné vrstvě není složitá komunikace  pouze jednosměrná komunikace  žádná přidaná funkcionalita  Observer  soupeř  možná alternativa v případě jednodušší komunikace  doplněk  kolegové mohou komunikovat s mediátorem pomocí Observera (vystupují v něm jako subjekty)

Otázky?