Návrhové vzory GoF (Gang of Four) jsou soubor základních návrhových vzorů pro objektově orientovaný návrh software, které poprvé představili Erich Gamma, Richard Helm, Ralph Johnson a John Vlissides v knize "Design Patterns: Elements of Reusable Object-Oriented Software".
Zde jsou základní návrhové vzory GoF:
Creational patterns (Vzory pro vytváření objektů):
Factory Method
Abstract Factory
Singleton
Builder
Prototype
Structural patterns (Vzory pro strukturu objektů):
Adapter
Bridge
Composite
Decorator
Facade
Flyweight
Proxy
Behavioral patterns (Vzory pro chování objektů):
Chain of Responsibility
Command
Interpreter
Iterator
Mediator
Memento
Observer
State
Strategy
Template Method
Visitor
Každý návrhový vzor má specifický účel a popisuje osvědčené postupy pro řešení konkrétních problémů při návrhu software. Vzory z kategorie Creational se zaměřují na způsob vytváření objektů, Structural vzory se soustředí na organizaci a strukturu objektů a Behavioral vzory popisují interakce mezi objekty a jejich chování. Použití těchto vzorů může pomoci zlepšit kvalitu, flexibilitu a přehlednost návrhu software.
Factory method
Factory Method poskytuje rozhraní pro vytváření objektů, ale umožňuje podtřídám rozhodnout, jaké třídy budou instanciovány.
Tento vzor se obvykle používá, když máme v systému několik tříd, které mají stejnou funkcionalitu, ale liší se ve svých implementacích. V takovém případě může být vhodné vytvořit abstraktní třídu, která definuje metodu Factory Method pro vytváření objektů, ale neimplementuje ji. Konkrétní implementace této metody se pak provádí v podtřídách abstraktní třídy.
Použití Factory Method má několik výhod. Jednou z hlavních výhod je, že odděluje vytváření objektů od kódu, který je používá. Tím se zvyšuje flexibility a snižuje závislost na konkrétních implementacích. Dále tím, že metoda Factory Method vrací instanci abstraktní třídy, může být tato třída použita kdekoliv, kde je očekávána, což zjednodušuje návrh a zvyšuje přehlednost kódu.
Příkladem použití Factory Method může být situace, kdy chceme vytvořit instanci třídy, ale neznáme přesnou třídu, kterou chceme vytvořit. V takovém případě může být vhodné vytvořit abstraktní třídu, která definuje Factory Method, a pak vytvořit konkrétní implementace této metody v podtřídách abstraktní třídy. Tímto způsobem můžeme vytvářet objekty různých tříd na základě potřeby a bez nutnosti znalosti konkrétní implementace.
Comments