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.