Sobes.tech
Middle+

Čo sú štrukturálne vzory návrhu?

sobes.tech AI

Odpoveď od AI

Štrukturálne vzory návrhu popisujú, ako môžu byť triedy a objekty kombinované na vytvorenie väčších štruktúr. Pomáhajú organizovať interakciu medzi objektmi, čím robia systém flexibilnejším a ľahšie udržiavateľným.

Niektoré bežné štrukturálne vzory:

  • Adaptér (Adapter): Umožňuje triedam s nekompatibilnými rozhraniami spolupracovať.
  • Most (Bridge): Oddelí abstrakciu od jej implementácie, čo umožňuje ich nezávislé zmeny.
  • Kompozit (Composite): Umožňuje zaobchádzať s skupinou objektov ako s jedným objektom.
  • Dekorátor (Decorator): Dynamicky pridáva nové správanie k objektom bez zmeny ich kódu.
  • Fasad (Facade): Poskytuje zjednotený rozhranie k súboru rozhraní v subsystéme.
  • Flyweight (Flyweight): Ušetrí pamäť zdieľaním spoločného stavu medzi mnohými malými objektmi.
  • Proxy (Proxy): Poskytuje náhradník pre iný objekt na kontrolu prístupu k nemu.

Príklad použitia vzoru Dekorátor:

# Základný komponent
class Coffee:
    def cost(self):
        return 5

    def description(self):
        return "Bežná 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étny dekorátor
class MilkDecorator(CoffeeDecorator):
    def cost(self):
        return self._coffee.cost() + 2

    def description(self):
        return self._coffee.description() + ", s mliekom"

# Použitie
my_coffee = Coffee()
print(my_coffee.description(), "-", my_coffee.cost()) # Bežná káva - 5

coffee_with_milk = MilkDecorator(my_coffee)
print(coffee_with_milk.description(), "-", coffee_with_milk.cost()) # Bežná káva, s mliekom - 7

Tieto vzory poskytujú flexibilitu pomocou použitia kompozície objektov namiesto dedičnosti, čo umožňuje meniť systém bez zmeny existujúceho kódu.