18
Návrhové vzory

Návrhové vzory · Návrhový vzor (Design Pattern) Šablona, kterou můžete využít pro řešení problému při kódování Algoritmy – Řeší konkrétní problémy Návrhové

  • Upload
    others

  • View
    16

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Návrhové vzory · Návrhový vzor (Design Pattern) Šablona, kterou můžete využít pro řešení problému při kódování Algoritmy – Řeší konkrétní problémy Návrhové

Návrhové vzory

Page 2: Návrhové vzory · Návrhový vzor (Design Pattern) Šablona, kterou můžete využít pro řešení problému při kódování Algoritmy – Řeší konkrétní problémy Návrhové

Návrhový vzor (Design Pattern)

● Šablona, kterou můžete využít pro řešení problému při kódování

● Algoritmy– Řeší konkrétní problémy

● Návrhové vzory– Řeší problémy návrh

Page 3: Návrhové vzory · Návrhový vzor (Design Pattern) Šablona, kterou můžete využít pro řešení problému při kódování Algoritmy – Řeší konkrétní problémy Návrhové

Rozdělení DP

● Creational patterns– Řeší dynamická rozhodnutí za běhu programu– Jaký objekt vytvořit a kolik jich vytvořit

● Structural patterns– Řeší strukturu tříd v systému

● Behavioral patterns– Řeší chování/spolupráci objektů

Page 4: Návrhové vzory · Návrhový vzor (Design Pattern) Šablona, kterou můžete využít pro řešení problému při kódování Algoritmy – Řeší konkrétní problémy Návrhové

Creational patterns

● Abstract Factory● Builder● Factory Method● Object Pool● Prototype● Singleton

Page 5: Návrhové vzory · Návrhový vzor (Design Pattern) Šablona, kterou můžete využít pro řešení problému při kódování Algoritmy – Řeší konkrétní problémy Návrhové

Structural patterns

● Adapter● Bridge● Composite● Decorator● Facade● Flyweight● Proxy

Page 6: Návrhové vzory · Návrhový vzor (Design Pattern) Šablona, kterou můžete využít pro řešení problému při kódování Algoritmy – Řeší konkrétní problémy Návrhové

Behavioral patterns

● Chain of responsibility● Command● Interpreter● Iterator● Mediator● Memento● Observer● Visitor

Page 7: Návrhové vzory · Návrhový vzor (Design Pattern) Šablona, kterou můžete využít pro řešení problému při kódování Algoritmy – Řeší konkrétní problémy Návrhové

Antipatterny

● Software development antipatterns– Zablokují možnost udržovat nebo rozšiřovat SW

● Software architecture antipatterns– Chyby v logickém návrh SW (míchání v

horizontálním a vertikálním návrhu)

● Project management antipatterns– Chyby ve vedení SW projektů a řízení lidí

Page 8: Návrhové vzory · Návrhový vzor (Design Pattern) Šablona, kterou můžete využít pro řešení problému při kódování Algoritmy – Řeší konkrétní problémy Návrhové

Singleton

● Jedináček může být v celém systému pouze jeden – nelze vytvořit více instancí

● Singleton má private konstruktor – nikdo ho nemůže volat a singleton je tak sám zodpovědný, za svou vlastní tvorbu

● Objekty k němu přistupují pomocí veřejné metody getInstance(), která navrací objekt singleton

Page 9: Návrhové vzory · Návrhový vzor (Design Pattern) Šablona, kterou můžete využít pro řešení problému při kódování Algoritmy – Řeší konkrétní problémy Návrhové

Singleton (jedináček)

Page 10: Návrhové vzory · Návrhový vzor (Design Pattern) Šablona, kterou můžete využít pro řešení problému při kódování Algoritmy – Řeší konkrétní problémy Návrhové

Příklad Singletonu

Page 11: Návrhové vzory · Návrhový vzor (Design Pattern) Šablona, kterou můžete využít pro řešení problému při kódování Algoritmy – Řeší konkrétní problémy Návrhové

Použití Singletonu

● Namísto globálních proměnných– Nezabordelí namespace aplikace– Umožňuje lazy initialization, což globální proměnné

neumožňují (okamžitě zaberou výpočetní prostředky)

● Stavové objekty jsou singletony (konečný automat)

● Fasáda je singleton● Logové soubory nebo vyrovnávací servery

Page 12: Návrhové vzory · Návrhový vzor (Design Pattern) Šablona, kterou můžete využít pro řešení problému při kódování Algoritmy – Řeší konkrétní problémy Návrhové

Ukázka v jazyce C#

Page 13: Návrhové vzory · Návrhový vzor (Design Pattern) Šablona, kterou můžete využít pro řešení problému při kódování Algoritmy – Řeší konkrétní problémy Návrhové

Decorator

● Přidá objektu dynamicky (za běhu) funkcionalitu (zodpovědnost)

● Jedná se o alternativu k podtřídám, narozdíl od dědičnosti však rozšiřuje funkcionalitu objektu a ne celé třídy

● Př: Okno průzkumníku souborů – možná chce uživatel scrollovat jen vertikálně nebo jen horizontálně nebo obojí. Můžeme dle jeho preference nechat za běhu takové okno vygenerovat

Page 14: Návrhové vzory · Návrhový vzor (Design Pattern) Šablona, kterou můžete využít pro řešení problému při kódování Algoritmy – Řeší konkrétní problémy Návrhové
Page 15: Návrhové vzory · Návrhový vzor (Design Pattern) Šablona, kterou můžete využít pro řešení problému při kódování Algoritmy – Řeší konkrétní problémy Návrhové
Page 16: Návrhové vzory · Návrhový vzor (Design Pattern) Šablona, kterou můžete využít pro řešení problému při kódování Algoritmy – Řeší konkrétní problémy Návrhové
Page 17: Návrhové vzory · Návrhový vzor (Design Pattern) Šablona, kterou můžete využít pro řešení problému při kódování Algoritmy – Řeší konkrétní problémy Návrhové
Page 18: Návrhové vzory · Návrhový vzor (Design Pattern) Šablona, kterou můžete využít pro řešení problému při kódování Algoritmy – Řeší konkrétní problémy Návrhové