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.

Slides:



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

(instance konkrétní třídy)
Průvodce aplikací GSMlink aneb Jak je jednoduché komunikovat s Athosem
Stručný úvod do UML.
Mediator. Mediator - motivace  FontDialog  závislosti mezi jednotlivými ovládacími prvky jsou netriviální.
Programovací jazyk C++
1 Small Business Windows XP Professional Platforma pro zpracování zpráv (Messaging Platform) 6 září, 2001.
Uživatelská rozhraní Uživatelská rozhraní 9. cvičení.
PJV151 Vnořené a vnitřní členy mohou být členy tříd a interfejsů. Je-li X obalem Y a Y je obalem Z, pak Z získá jméno X$Y$Z - kompilací vzniknou classy.
Čtvrté cvičení Objektové programování Objektový model v Javě
Úvod do databází Databáze.
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
M-Cloud.cz Groupwarové řešení pro malé a střední podniky.
Proč programovat v LS objektově Jiří Krákora, Alliance Healthcare.
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í :
Strategy. Strategy – „All-in-1“ na začátek class AStrategy { public: virtual void Algorithm()=0; protected: AStrategy(); }; class SpecificStrategy: public.
Databázové systémy Architektury DBS.
Facade [f ə ˈ s ɑː d]f ə ˈ s ɑː d. Facade Před: Po:
Informatika pro ekonomy II přednáška 10
Databázové systémy Přednáška č. 6 Proces návrhu databáze.
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í
IB111 Programování a algoritmizace
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.
Richard Lipka Department of Computer Science and Engineering Faculty of Applied Sciences University of West Bohemia, Pilsen, Czech Republic 1.
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.
OPERAČNÍ SYSTÉMY.
Foreign key mapping Jakub Chalupa Naim Ashhab ČVUT FEL
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í.
Kreslítko Petr Diviš Zdeněk Papež. Úvod - připomenutí Desktopová („stand-alone“) aplikace Jednoduchý grafický editor  Tvorba a editace základních geometrických.
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í.
Chain of Responsibility. Chain of responsibility - účel Účel  Umožňuje zrušení vazby mezi odesílatelem a příjemcem požadavku  Umožňuje zaslání požadavku.
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Š.
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íž.
Architektura X Windows ● Model klient-server ● X display (displej)– komplexní zařízení s vlastními výstupními (obrazovka) a vstupními zařízeními (myš,
Internet. je celosvětový systém navzájem propojených počítačových sítí („síť sítí“), ve kterých mezi sebou počítače komunikují pomocí rodiny protokolů.
Praha & EU: Investujeme do vaší budoucnosti Evropský sociální fond Gymnázium, Praha 10, Voděradská 2 Projekt OBZORY MVC vs MVP.
Průvodce aplikací GSMlink aneb Jak je jednoduché komunikovat s Athosem
SOLID principy v OOP návrhu
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
Operační systémy 9. Spolupráce mezi procesy
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.
Proxy 1.
Composite “Spojuj a panuj”.
Transkript prezentace:

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

Mediator - motivace Řízení letového provozu Formulář, který všichni známe. Stručné připomenutí toho, jak se prvky vzájemně ovlivňují. 2 2

Mediator - motivace FontDialog Závislosti mezi jednotlivými ovládacími prvky jsou netriviální Formulář, který všichni známe. Stručné připomenutí toho, jak se prvky vzájemně ovlivňují. 3 3

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 fontEntryField fontListBox styleEntryField styleListbox fontListBox fontEntryField styleEntryField preview Popsat zřejmé nevýhody tohoto řešení – náročná správa, špatná rozšiřitelnost,… styleListBox entryField preview preview 4 4

Mediator - motivace Ř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 styleEntryField mediator má přehled o jednotlivých widgetech, koordinuje interakce fontEntryField mediator fontListBox mediator aFontDialogDirector Popsat interakci a výhody tohoto řešení. styleListBox mediator preview 5 5

Mediator - chování Listbox a entry field o sobě vůbec neví čas uživatel změní výběr v listboxu, ten ohlásí změnu mediátorovi, který předá aktuální položku 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 6 6

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 7 7

Mediator - implementace varianty - abstraktní x konkrétní 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 (x Chain of Responsibility) implementace komunikace speciální notifikační interface mediátora Observer kolegové vystupují jako subjekty při změně stavu upozorní observera-mediátora rozumná extrakce funkcionality – ne „god“ objekt mediátor neřídí celou funkcionalitu spolupracujících objektů jen zabezpečuje komunikaci mezi nimi Případ notifikačního interface je předávání ukazatele na sebe sama. 8 8

Mediator - implementace Rozhraní/abstraktní třídy public interface IAirTrafficControl { void ReceiveAircraftLocation(Aircraft location); void RegisterAircraftUnderGuidance(Aircraft aircraft); } Rozhraní kolega → mediátor public abstract class Aircraft { private readonly IAirTrafficControl _atc; //z konstruktoru public int Altitude get { return _currentAltitude; } set _currentAltitude = value; _atc.ReceiveAircraftLocation(this); } public void Climb(int heightToClimb) Altitude += heightToClimb; Rozhraní mediátor → kolega 9 9

Mediator - implementace Konkrétní chování v potomcích public class ATCenter : IAirTrafficControl { public void ReceiveAircraftLocation(Aircraft reportingAircraft) { foreach (var currentAircraft in _aircraftsUnderGuidance) { if (//moc blizko) //rozhodnout, ktere letadlo zmeni polohu a o kolik aircraft.Climb(1000); } public void RegisterAircraftUnderGuidance(Aircraft aircraft) { //pridat do kolekce _aircraftUnderGuidance } } public class Airbus321 : Aircraft public class Boeing737200 : Aircraft public class Embraer190 : Aircraft Podle typu letadla různá bezpečná vzdálenost, různá priorita 10 10

Mediator - účel Účel Není to proti principům OOP? Zapouzdření chování systému objektů Loose coupling Umožňuje měnit interakci objektů nezávisle na jejich vnitřní implementaci Zjednodušuje program SOLID – Single Responsibility Principle 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 Pár slov o spojení „Loose coupling“. Poznámky související se sléváním do monolitu: distribuce chování → velká propojenost jednotlivých objektů propojenost → objekt většinou nemůže pracovat bez ostatních i systém rozdělený na mnoho částí se chová jako monolit změnit chování distribuované do mnoha (stovek) objektů může být obtížné – dědičnost nám moc nepomůže 11 11

Mediator - důsledky Výhody a omezení Odstraňuje nutnost referencí na všechny spolupracující objekty Kolegové o sobě navzájem nevědí -> reusability 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ě n:m interakce nahrazuje 1:m, které jsou jednodušší k pochopení i rozšiřování Centralizuje řízení Samotný mediátor může být složitý 12 12

Mediator - důsledky Co když komunikujeme s databází a reálnými letadly?  public class ATCenter : IAirTrafficControl { public void ReceiveAircraftLocation(Aircraft reportingAircraft) { foreach (var currentAircraft in _aircraftsUnderGuidance) { if (//moc blizko) //rozhodnout, ktere letadlo zmeni polohu a o kolik aircraft.Climb(1000); } public void RegisterAircraftUnderGuidance(Aircraft aircraft) { //pridat do kolekce _aircraftUnderGuidance } } 13 13

Mediator - rozšířená verze Použití v kombinaci s CQRS CQRS Command & Query Responsibility Segregation DDD – chceme vyjadřovat doménovou logiku Pokusíme se o tenkého Mediatora SRP – pouze komunikace objektů, doménová logika je v Handlerech DRY – znovupoužití Command / Query 14 14

Mediator - rozšířená verze 15 15

Mediator - rozšířená verze   Na font dialog je CQRS trochu overkill Ukážeme si reálný use case REST API v ASP.NET Core Autentikace uživatele 16 16

Mediator - rozšířená verze ne cerne pozadi - pres dataprojektor to neni videt 17 17

Mediator - rozšířená verze prilis maly font, necitelne, vyberte jen podstatne fragmenty ne cerne pozadi 18 18

Mediator - rozšířená verze 19 19

Mediator - použití Kdy sáhnout po mediátoru? skupina objektů má komunikovat definovaným, ale složitým způsobem složité závislosti mezi objekty znovupoužití objektu je obtížné 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 20 20

Mediator – použití Možná použití – počítačový svět GUI Instant messaging, sms zprávy mediátor – chatovací room, operátor kolegové – jednotliví klienti Dům budoucnosti – „smart home“ Mnoho různorodých zařízení lednice, klimatizace, topení, různá teplotní či vlhkostní čidla alarm, zamykání dveří, ... Potřeba koordinace (ne přímo řízení) alarm -> policie, sms majiteli dojde mléko -> objednat Paralelní a distribuované výpočty Synchronizace, mezivýsledky Obchodování na burze Řízení letového provozu Web services Trochu rozvést GUI. 21 21

Mediator – související NV Facade Fasáda jen abstrahuje skupinu objektů do jednoho rozhraní Vnitřní objekty o ní neví Jednoduchá jednosměrná komunikace Nepřidává funkcionalitu Observer (publish – subscribe) Soupeř - možná alternativa v případě jednodušší komunikace Doplněk - kolegové mohou komunikovat s mediátorem pomocí Observera Chain of Responsibility Zasílání zpráv neznámým objektům přes zřetězené objekty CQRS 22 22