Middle+
Mi az a strukturális tervezési minták?
sobes.tech MI
Válasz az MI-től
A szerkezeti tervezési minták leírják, hogyan kombinálhatók osztályok és objektumok nagyobb struktúrák építéséhez. Segítenek az objektumok közötti interakció szervezésében, így a rendszer rugalmasabb és könnyebben karbantartható lesz.
Néhány gyakori szerkezeti minta:
- Adapter (Adapter): Lehetővé teszi inkompatibilis interfészekkel rendelkező osztályok együttműködését.
- Bridge (Híd): Elkülöníti az absztrakciót a megvalósítástól, így mindkettő függetlenül változhat.
- Composite (Összetett): Lehetővé teszi, hogy egy csoport objektumot egyetlen objektumként kezeljünk.
- Decorator (Díszítő): Dinamikusan ad hozzá új viselkedést az objektumokhoz anélkül, hogy módosítaná azok kódját.
- Facade (Felület): Egységes felületet biztosít egy alrendszer interfészeinek halmazához.
- Flyweight (Repülő súly): Memória megtakarítás, közös állapot megosztásával sok kis objektum között.
- Proxy (Proxy): Egy másik objektum helyettesítője az hozzáférés kontrollálására.
Decorator minta példája:
# Alap komponens
class Coffee:
def cost(self):
return 5
def description(self):
return "Normál kávé"
# Alap 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ét dekorátor
class MilkDecorator(CoffeeDecorator):
def cost(self):
return self._coffee.cost() + 2
def description(self):
return self._coffee.description() + ", tejjel"
# Használat
my_coffee = Coffee()
print(my_coffee.description(), "-", my_coffee.cost()) # Normál kávé - 5
coffee_with_milk = MilkDecorator(my_coffee)
print(coffee_with_milk.description(), "-", coffee_with_milk.cost()) # Normál kávé, tejjel - 7
Ezek a minták rugalmasságot biztosítanak az objektumok összetételének használatával a öröklődés helyett, lehetővé téve a rendszer módosítását anélkül, hogy a meglévő kódot meg kellene változtatni.