Sobes.tech
Middle

Co jsou návrhové vzory?

sobes.tech AI

Odpověď od AI

Vzorové (designové) vzory jsou typová, opakovaně ověřená řešení často se vyskytujících problémů návrhu v rámci objektově orientovaného programování. Nejedná se o hotové knihovny nebo frameworky, ale o koncepty nebo "recepty", které lze přizpůsobit konkrétnímu úkolu.

Vzorové vzory se zaměřují na vztahy mezi třídami a objekty. Dělí se do tří hlavních kategorií:

  • Tvořivé (Creational): Vzory pro tvorbu objektů.
    • Factory Method (Tovární metoda)
    • Abstract Factory (Abstraktní továrna)
    • Singleton
    • Builder (Stavitel)
    • Prototype (Prototyp)
  • Strukturální (Structural): Vzory pro organizaci tříd a objektů do větších struktur.
    • Adapter (Adaptér)
    • Bridge (Most)
    • Composite (Seskupení)
    • Decorator (Dekorátor)
    • Facade (Fasáda)
    • Flyweight
    • Proxy (Zástupce)
  • Chování (Behavioral): Vzory pro algoritmy a způsoby interakce mezi třídami a objekty.
    • Chain of Responsibility (Řetězec odpovědnosti)
    • Command (Příkaz)
    • Iterator (Iterátor)
    • Mediator (Mediátor)
    • Memento
    • Observer (Pozorovatel)
    • State (Stav)
    • Strategy (Strategie)
    • Template Method (Šablonová metoda)
    • Visitor (Návštěvník)

Použití vzorů návrhu umožňuje vytvářet flexibilnější, rozšiřitelnější a lépe udržovatelný kód, zlepšuje jeho čitelnost a usnadňuje týmovou práci.

Například vzor Singleton zaručuje, že třída má pouze jednu instanci a poskytuje k ní globální přístupový bod.

// Příklad Singleton v Javě
class Singleton {
    private static Singleton instance; // Jediná instance

    private Singleton() {
        // Soukromý konstruktor, aby se zabránilo vytváření nových instancí
    }

    public static Singleton getInstance() {
        if (instance == null) { // Vytvoření instance při prvním volání
            instance = new Singleton();
        }
        return instance; // Vrací jedinou instanci
    }

    public void showMessage() {
        System.out.println("Ahoj ze Singletonu!");
    }
}