Blog | Co jsou návrhové vzory?

Co jsou návrhové vzory?

Pokud je pro vás téma návrhových vzorů zatím neznámé, dnes vám celý princip jednoduše vysvětlím. Takže. Návrhový vzor je ustálený postup, který je považován za správné řešení určitého problému.

Pokrývač si nejdřív nanosí tašky a pak pokrývá. Vědec se snaží omezit vyrušování, protože by mohl udělat chybu. Prodavačka si počítá osmnáct, dvacet, čtyřicet, padesát a sto, aby to nespletla. Všichni používají určité „pracovní vzory“. Návrhové vzory jsou také „postupy při práci analytika a programátora“ – jen jsou zapsané přímo v kódu.

A teď se podívejme na známé typy návrhových vzorů:

Vzory týkající se tvorby objektů

Tyto vzory řeší problematiku, kdy v systému vznikají nové objekty a my nechceme (nebo nemůžeme) jen tak zavolat new bez následků. Návrhový vzor umožňuje snáze vytvářet podobné objekty, oddělit vytváření objektu od implementace, je-li to složité, umožňuje oddálit skutečné vytvoření až na okamžik, kdy je objekt skutečně použit, řeší situaci, kdy má být v systému práve jedna instance, nebo řeší správu paměti nad objektem.

Vzory týkající se struktury programu

Tyto návrhové vzory se obvykle týkají flexibility systému. Buď umožňuje snadno rozšiřovat kód o další varianty, nebo usnadňuje použití stávajícího zdrojáku. Výsledkem použití takového návrhového vzoru je například to, že nejsme závislí na jedné databázi, nebo že jsme schopni použít cizí knihovnu s extrémně zpraseným API lidsky.

Vzory týkající se chování

Tyto vzory jsou velmi variabilní. Často se ale týkají toho, že v OOP obekt zasílá zprávu a nám se může stát, že není předem jasné, komu tu zprávu chceme poslat, nebo kam přiložit další nutná data, které onen objekt použije. Zároveň takové vzory umožňují sledovat změny v objektech, dávat o nich informace dalším objektům v našem systému (nebo v testovacím prostředí).

Vzory řešící problémy vzniklé spouštěním programů ve vláknech a tudíž při souběžném řešení úlohy

Tyto návrhové vzory se zaměřují pravděpodobně tu nejtěžší činnost, kterou můžete při programování řešit. Na souběžně běžící kód, správu procesů, správu sdílených dat, případně slučování práce více vláken.

Proč by měl někdo návrhový vzor používat?

Nejen proto, že se jedná o prověřenou cestu. Něco takového je sice argument, ale nezabrání v tom, prošlapávat si svou cestičku a zkoušet objevovat nové vlastní vzory. S čím jsem se ale setkal a co mi přijde na návrhových vzorech skvělé, že dovedu popsat (a pochopit) systém mnohem rychleji.

Nejhorší (z toho, co jsem zažil, pominu-li experimenty s assemblerem) je strukturované programování, musím si pamatovat, co dělá která funkce v systému. Nad tím stojí objektové programování – stačí si pamatovat, jaké objekty mají jaké zodpovědnosti. Ještě výš stojí systém naprogramovaný s použitím návrhových vzorů – tam stačí pamatovat si, jak na sebe jednotlivé vzory v systému navazují. Úplně nejvýš stojí systém napsaný ve frameworku s použitím návrhových vzorů – tam je velká část aplikace jasná ze zvyklostí toho daného frameworku.

Co se jednoduše chápe, to se i snáze učí. A systém, který správně používá návrhové vzory a vhodný framework, se každý vývojář naučí mnohem rychleji. Zejména tehdy, kdy daný framework a vzory dobře ovládá. Předávání práce novému kolegovi je tak stane mnohem snažší, než by tomu bylo v neobjektovém kó­du.

Samozřejmě existují situace, kdy je nějaký návrhový vzor použit špatně (často je vypichován Singleton, já bych k němu přidal i Factory, který se často používá místo Dependency Injection). V tom je nejlepší odpovědí:

  1. používat framework
  2. mít dobrého analytika
  3. refaktorovat a redesignovat průběžně a vzory, které se neosvědčily zahodit, nebo vyměnit

Nicméně s návrhovými vzory může začít každý. Doporučím, nezačínejte se Singletonem ani Factory, zaměřte se a naučte spíš tyto vzory: Adapter, Chain of responsibility, Observer, Inversion of Control, Strategy, Data Mapper a samozřejmě MVC. Ostatní už přijde samo, pokud máte čas při práci refaktorovat (což byste rozhodně měli), brzy se naučíte vzory používat správně.

Programování

Předejte zkušenosti i dalším a sdílejte tento článek!

Předchozí článek
Následující článek


Jiří Knesl
Business & IT konzultant

Jiří Knesl poprvé začal programovat v roce 1993. Od té doby, díky skvělým učitelům a později zákazníkům, měl možnost neustále růst v oboru vývoje webových aplikací a informačních systémů. v roce 2002 se přidal zájem o ekonomii a v roce 2006 o organizaci práce. Vším tím se konstantně profesně zabývá jak ve svém podnikání, tak i u zákazníků. Za posledních 5 let vydal na tato témata přes 400 článků.

Prohlédněte si moje reference

Mám zkušenosti z rozsáhlých projektů pro korporace, velké podniky, střední i malé firmy, ale i pro startupy v cloudu. Zvyšoval jsem jejich know-how, pomáhal nastavovat jejich organizační strukturu, byl lektorem a mentorem v náročných situacích. Podívejte se, jak vidí můj přínos samotní klienti.

Sledujte mé postřehy na sociálních sítích