Sobes.tech
Middle+
161

Co jsou to strukturální návrhové vzory?

Odpověď od AI

sobes.tech AI

Strukturální vzory návrhu popisují, jak mohou být třídy a objekty spojeny za účelem vytvoření větších struktur. Pomáhají organizovat interakci mezi objekty, čímž činí systém flexibilnější a lépe udržovatelný.

Některé běžné strukturální vzory:

  • Adaptér (Adapter): Umožňuje spolupráci tříd s nekompatibilními rozhraními.
  • Most (Bridge): Odděluje abstrakci od její implementace, což umožňuje jejich nezávislou změnu.
  • Seskupení (Composite): Umožňuje zacházet s skupinou objektů jako s jedním objektem.
  • Dekorátor (Decorator): Dynamicky přidává nové chování k objektům bez změny jejich kódu.
  • Fasáda (Facade): Poskytuje sjednocené rozhraní k sadě rozhraní v subsystému.
  • Flyweight (Flyweight): Šetří paměť sdílením společného stavu mezi mnoha malými objekty.
  • Proxy (Proxy): Poskytuje zástupce pro jiný objekt za účelem kontroly přístupu.

Příklad použití vzoru Dekorátor:

# Základní komponenta
class Coffee:
    def cost(self):
        return 5

    def description(self):
        return "Obyčejná káva"

# Základní dekorátor
class CoffeeDecorator:
    def __init__(self, coffee):
        self._coffee = coffee

    def cost(self):
        return self._coffee.cost()

    def description(self):
        return self._coffee.description()

# Konkrétní dekorátor
class MilkDecorator(CoffeeDecorator):
    def cost(self):
        return self._coffee.cost() + 2

    def description(self):
        return self._coffee.description() + ", s mlékem"

# Použití
my_coffee = Coffee()
print(my_coffee.description(), "-", my_coffee.cost()) # Obyčejná káva - 5

coffee_with_milk = MilkDecorator(my_coffee)
print(coffee_with_milk.description(), "-", coffee_with_milk.cost()) # Obyčejná káva, s mlékem - 7

Tyto vzory poskytují flexibilitu díky použití složení objektů namísto dědičnosti, což umožňuje měnit systém bez nutnosti upravovat stávající kód.