Middle+
Ce sunt modelele de proiectare structurale?
sobes.tech AI
Răspuns de la AI
Modelele de proiectare structurale descriu modul în care clasele și obiectele pot fi combinate pentru a construi structuri mai mari. Ele ajută la organizarea interacțiunii dintre obiecte, făcând sistemul mai flexibil și mai ușor de întreținut.
Unele modele structurale comune:
- Adapter (Adaptor): Permite claselor cu interfețe incompatibile să lucreze împreună.
- Bridge (Pod): Separă abstracția de implementarea sa, permițându-le să se schimbe independent.
- Composite (Compozit): Permite tratarea unui grup de obiecte ca un singur obiect.
- Decorator (Decorator): Adaugă dinamic comportament nou obiectelor fără a modifica codul lor.
- Facade (Fațadă): Oferă o interfață unificată pentru un set de interfețe dintr-un subsistem.
- Flyweight (Flyweight): Economisește memorie împărțind starea comună între multe obiecte mici.
- Proxy (Proxy): Oferă un înlocuitor pentru alt obiect pentru a controla accesul la acesta.
Exemplu de utilizare a pattern-ului Decorator:
# Component de bază
class Coffee:
def cost(self):
return 5
def description(self):
return "Cafea obișnuită"
# Decorator de bază
class CoffeeDecorator:
def __init__(self, coffee):
self._coffee = coffee
def cost(self):
return self._coffee.cost()
def description(self):
return self._coffee.description()
# Decorator concret
class MilkDecorator(CoffeeDecorator):
def cost(self):
return self._coffee.cost() + 2
def description(self):
return self._coffee.description() + ", cu lapte"
# Utilizare
my_coffee = Coffee()
print(my_coffee.description(), "-", my_coffee.cost()) # Cafea obișnuită - 5
coffee_with_milk = MilkDecorator(my_coffee)
print(coffee_with_milk.description(), "-", coffee_with_milk.cost()) # Cafea obișnuită, cu lapte - 7
Aceste modele oferă flexibilitate prin utilizarea compoziției obiectelor în loc de moștenire, permițând modificări în sistem fără a schimba codul existent.