Facade [f ə ˈ s ɑː d]f ə ˈ s ɑː d. Facade Před: Po:

Slides:



Advertisements
Podobné prezentace
Facade [f ə ˈ s ɑː d]f ə ˈ s ɑː d. Facade Před: Po:
Advertisements

Projekt Informační a vzdělávací portál Libereckého kraje I CZ.1.07/1.1.00/ I Školení pro uživatele portálu.
Uvedení autoři, není-li uvedeno jinak, jsou autory tohoto výukového materiálu a všech jeho částí. Tento projekt je spolufinancován ESF a státním rozpočtem.
Mobilní aplikace Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Jitka Vlčková. Dostupné z Metodického portálu ISSN
Uvedení autoři, není-li uvedeno jinak, jsou autory tohoto výukového materiálu a všech jeho částí. Tento projekt je spolufinancován ESF a státním rozpočtem.
1/1/ Rozšíření aplikace FatRat Luboš Doležel Vedoucí práce: Ing. Jan Žďárek, PhD. Oponent: Ing. Tomáš Kadlec
HRUBÁ MZDA VČETNĚ PŘÍPLATKŮ VY_32_INOVACE_14_1_5 HRUBÁ MZDA VČETNĚ PŘÍPLATKŮ Autor: Ing. Jana Rauscherová CZ.1.07/1.5.00/ Gymnázium a Střední odborná.
Jak lze využít infrastrukturu CzechPOINT v rámci úřadu Mgr. Jarmila Šmardová
ZŠ Brno, Řehořova 3 S počítačem snadno a rychle Informatika ročník III
Úvod do Delphi - 1.hodina OB21-OP-EL-KON-DOL-M-4-006A Orbis pictus 21. století.
Jihočeská univerzita v Českých Budějovicích, Zdravotně sociální fakulta, Jírovcova 24/1347, České Budějovice 1 Vzdělávání poskytovatelů sociálních.
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o, Orlová Lutyně AUTOR: Ing. Oldřich Vavříček NÁZEV: Podpora výuky v technických oborech TEMA: Základy elektrotechniky.
Programování v jazyce C++ Dědičnost a polymorfismus.
Odborný výcvik ve 3. tisíciletí Tato prezentace byla vytvořena v rámci projektu.
Funkce Lineární funkce a její vlastnosti 2. Funkce − definice Funkce je předpis, který každému číslu z definičního oboru, který je podmnožinou množiny.
Projekt MŠMTEU peníze středním školám Název projektu školyICT do života školy Registrační číslo projektuCZ.1.07/1.5.00/ ŠablonaIII/2 Sada 37 AnotaceRegulátory.
Počitačová bezpečnost - je obor informatiky, který se zabývá zabezpečením informací v počítačích (odhalení a zmenšení rizik spojených s používáním počítače).
Uvedení autoři, není-li uvedeno jinak, jsou autory tohoto výukového materiálu a všech jeho částí. Tento projekt je spolufinancován ESF a státním rozpočtem.
INTERNET. Internet je celosvětový systém navzájem propojených počítačových sítí, ve kterých mezi sebou počítače komunikují pomocí rodiny protokolů TCP/IP.
KURZ ALGORITMIZACE A PROGRAMOVÁNÍ V JAZYCE C Lekce č. 10: Tvorba vlastních funkcí Bc. Radek Libovický.
Software =je v informatice sada všech počítačových programů používaných v počítači, které provádějí nějakou činnost. - Software je protiklad k hardwaru,
Dokument KAP MSK - obsah
Elektronické bankovnictví
Základy automatického řízení 1
EU_62_A_sada 2_02_M_Finanční produkty_Pol
Internet.
Základní škola a mateřská škola Lázně Kynžvart Autor: Mgr
Počítačová grafika Rozdělení počítačové grafiky, charakteristika jednotlivých druhů.
COM – Práce s objektovým modelem jiné aplikace
Inf Počítač a lidé s handicapem
Martin Dybal Microsoft MSP, MCP
NÁZEV ŠKOLY: Základní škola Hostouň, okres Domažlice,
Lineární funkce - příklady
INTERNET Číslo projektu CZ.1.07/1.5.00/ Název školy
State 1.
Povinnosti provozovatele střešních instalací při dodávkách přímým vedením
Edgecam.
Programování v jazyce C++
Přístupový systém aneb kontrola vstupů
JEdit Open source programování – – Marek Bílý.
Název školy Základní škola Šumvald, okres Olomouc Číslo projektu
Databáze MS ACCESS 2010.
Configuration Patterns
Modré volání O2 zaměstnanecký program pro Univerzitu Pardubice
Abstract Factory.
Propojení UIS s knihovnami
Střední odborná škola a Střední odborné učiliště, Hradec Králové, Vocelova 1338, příspěvková organizace Registrační číslo projektu: CZ.1.07/1.5.00/
Výukový materiál zpracován v rámci projektu
Využití softwaru při tréninku a hodnocení sportovních aktivit
Přídavná zařízení.
VY_32_INOVACE_6_5_Operační systémy
Microsoft Dynamics NAV - Navision
GPRS, EDGE, CDMA, WiFi, vytáčené připojení, linka euro ISDN, ADSL
Lotus Notes Lotus Notes Alena Málková
Materiál byl vytvořen v rámci projektu
Remote login.
Builder „Návrhový vzor oddělující konstrukci složitých objektů od jejich reprezentace. Čímž je možné použít stejný proces konstrukce pro rozdílné reprezentace.“
Cena pro nového distributora Profit za nového distributora
Přednášky z Distribuovaných systémů
Nádherné prezentace navrhnete a předvedete snadno a s jistotou.
M-Commerce Šárka Přibíková 3MA
Počítačová podpora konstruování
Online databáze pro ohrožené rodiny a děti v ORP Chrudim SÍŤ POMOCI A PODPORY na Chrudimsku V RÁMCI PROJEKTU EFEKTIVNÍ ŘÍZENÍ SÍTĚ SLUŽEB PRO OHROŽENÉ.
Lineární funkce a její vlastnosti
E-Goverment Zdeněk Hanák.
Informační systém základních registrů
Seminář o stavebním spoření
Adapter
Bridge.
Digitální učební materiál
Transkript prezentace:

Facade [f ə ˈ s ɑː d]f ə ˈ s ɑː d

Facade Před: Po:

Facade Subsystémy (Zordi)Fasáda (Megazord)

Facade Známý jako  Facade, Fasáda Motivace  Rozdělení systému na subsystémy  Subsystém = množina tříd a dalších subsystémů  Rozhraní subsystému se s přibývajícíma třídami stává složitým  Řešením je zavedení fasády - sjednocené high-level rozhraní Řada užitečných vlastností  Zapouzdření – uživatel nemusí pracovat přímo se třídami subsystému Použití subsystémů je zjednodušeno  Redukce závislosti mezi subsystémy Zjednodušuje komunikaci subsystémů  Decoupling Zvyšuje přenositelnost  …

Facade – zákaznická podpora Klient si objednává produkt po telefonu z katalogu  Operátor podpory predstavuje prostředníka mezi klientem a jednotlivými službami  Klient nepotřebuje žádné znalosti o fungování firmy, pouze zadá objednávku  Jednotlivé fáze objednávky (doprava, platba, …) mohou být zprostředkované různými firmami Ty se mohou časem měnit

Facade – domácí kino projektor DVD přehrávač žaluzie HI-FI soustava Puštění filmu:  zatáhnutí žaluzií  zapnutí projektoru  zapnutí DVD přehrávače  zapnutí ozvučení Ukončení přehrávání:  vypnout DVD přehrávač  vypnout ozvučení  vypnout projektor  vytáhnout žaluzie

Facade – domácí kino Řešení: Univerzální ovladač s funkcemi:  Přehrát film  Ukončit film  …  zatáhnout žaluzie  zapnout projektor  zapnout DVD přehrávač  zapnout ozvučení  vypnout DVD přehrávač  vypnout ozvučení  vypnout projektor  vytáhnout žaluzie

Facade – kompilátor Účastníci  Fasáda – Compiler Přijímá high-level požadavky Deleguje požadavky klienta mezi třídy subsystému Může vykonávat vlastní práci (napr. Adapter)

Facade – kompilátor Účastníci  Subsystémy – Scanner, Parser, … Implementují logickou část kompilátoru Vykonávají příchozí požadavky od fasády O fasádě nevědí (transparentnost) Nejsou skryté (!)

Facade – kompilátor class Scanner { public: … Scanner(istream&); virtual Token& Scan(); … }; Třída subsystému class Parser { public: … virtual void Parse(Scanner&, ProgramNodeBuilder&); … }; Třída subsystému class ProgramNodeBuilder { public: ProgramNodeBuilder(); virtual ProgramNode* NewVariable(…); virtual ProgramNode* NewAssignment(…); virtual ProgramNode* NewReturnStatement(…); virtual ProgramNode* NewCondition(…) const; … ProgramNode* GetRootNode(); … }; Třída subsystému

Facade – kompilátor class ProgramNode { public: // program node manipulation virtual void GetSourcePosition(int& line, int& index); … // child manipulation virtual void Add(ProgramNode*); virtual void Remove(ProgramNode*); … virtual void Traverse(CodeGenerator&); protected: ProgramNode(); }; Třída subsystému void ExpressionNode::Traverse (CodeGenerator& cg) { cg.Visit(this); ListIterator i(_children); for (i.First(); !i.IsDone(); i.Next()) { i.CurrentItem()->Traverse(cg); }

Facade – kompilátor class Compiler { public: Compiler(); virtual void Compile(istream&,BytecodeStream&); }; void Compiler::Compile ( istream& input, BytecodeStream& output ) { Scanner scanner(input); ProgramNodeBuilder builder; Parser parser; parser.Parse(scanner, builder); RISCCodeGenerator generator(output); // potomek CodeGenerator ProgramNode* parseTree = builder.GetRootNode(); parseTree->Traverse(generator); } Facade class CodeGenerator { public: virtual void Visit(StatementNode*); virtual void Visit(ExpressionNode*); … protected: CodeGenerator(BytecodeStream&); protected: BytecodeStream& _output; }; Třída subsystému

Facade – volání funkce Diagram volání funkce  Uživatel využívá Facade pro přístupu k systému

Facade – reálná implementace Systém kombinující info o letech a hotelech

Použití  Když je subsystém složitý na přímé použití Cena za vytvoření fasády < nastudování subsystému uživateli Umožnuje obalit množinu špatně navržených API do jednoho lepšího  Když existuje mnoho závislostí vně subsystému/mezi subsystémy Komunikace skrz fasádu (higher-level interface)  Při vytváření vstupních bodů vrstveného systému Výhody použití  Redukuje počet objektů, se kterými klienti komunikují Snadnější použití subsystému Snadnější nahrazení částí subsystému a rozšíření subsystému  Zmenšuje počet závislostí mezi klienty a subsystémem Odstraňuje komplexní a kruhové závislosti Méně kompilačních závislostí  Neskrývá třídy subsystému Jednoduchost nebo použití na „míru“ Facade – použití

Facade – implementace Fasáda jako abstraktní třída (příp. interface)  Konkrétní implementace pro konkrétní subsystém je jejím potomkem  Klienti komunikují se subsystémem přes rozhraní abstraktní třídy Klient nemusí vědět, která implementace byla použita Flexibilita Fasáda jako jedna konfigurovatelná třída  Slabší alternativa  Výměna komponent subsystému za běhu  Dependency Injection, Inversion of Control

Typické chyby  Fasáda vůbec nebyla zapotřebí Subsystém je příliš jednoduchý  Fasáda byla implementována už od začátku Má přibýt až když je potřebná  Uživatel je nucen fasádu používat Třídy subsystému jsou privátní  Fasáda neslouží k zvýšení bezpečnosti Nic neskrývá  Subsystém o fasádě ví Třídy subsystému si drží referenci na fasádu  Fasáda implementuje více než by měla Facade – použití

V mobilních aplikacích OS jako Façade  Interface pro ovládání přístoje Session Façade, Core J2EE Patterns  Fasáda pro webové služby JOptionPane ve Swingu  vytváří a zobrazuje různé typy základních dialogových oken  zjednodušuje používání této rozsáhlé knihovny Tomcat a jeho servlet API Facade – reálné použití

Wrapper Facade je návrhový vzor vycházející z Facade  Místo celých subsystémů obaluje volání nízko úrovňového API OS C API, Socket či Thread knihovny nebo GUI Často se používá pro zvýšení prenositelnosti, robustnosti a udržovatelnosti částí kódu závislých na OS Příklady  Microsoft Foundation Classes, Java Foundation Class Libraries (Swing, AWT,...) Nabízí vysoko úrovňové GUI API obalením např. Win32 C API  Modul standartní C++ knihovny Standard udává rozhraní, pro implementaci bývají použity různé knihovny  Například knihovna pthread použitá kompilátory Clang a G++ Facade – reálné použití (Wrapper Facade)

Facade – související vzory Abstract Factory  Fasáda může poskytovat rozhraní pro tvorbu objektů Singleton  Fasáda jako Singleton - jen jeden vstupní bod do systému Adapter  Adapter také tvoří interface pro přístup k systému  Nadstavba nad existujícími rozhraními  Primární funkci – standardizovat rozhraní Mediator  Mediator také snižuje závislosti  Komponenty subsystému přes něj komunikují (vědí o něm!)  Mediator abstrahuje funkcionalitu ze tříd a sám ji implementuje

Facade – shrnutí (aneb výhody po třetí) Poskytuje zjednodušené rozhraní  Komfort uživatele je priorita  Ale neskrývá ani původní rozhraní Zapouzdřuje subsystém  Množina špatně navržených API alternována jediným dobře navrhnutým API Eliminuje závislosti všeho druhu  Klient – subsystém  Subsystém – subsystém  Mezi dvěma třídami subsystému  Ve výsledku eliminuje i kompilační závislosti  …