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.