Middle+
Mis on struktuursed disainimustrid?
sobes.tech AI
Vastus AI-lt
Struktuursed disainimudelid kirjeldavad, kuidas klassid ja objektid võivad olla ühendatud suuremate struktuuride loomiseks. Nad aitavad organiseerida suhtlust objektide vahel, muutes süsteemi paindlikumaks ja hooldatavamaks:
Mõned levinumad struktuursed mudelid:
- Adapter (Adapter): võimaldab töötada koos mittesobivate liidestega.
- Sild (Bridge): eraldab abstraktsiooni selle teostusest, võimaldades neil muutuda sõltumatult.
- Komposiit (Composite): võimaldab vaadata objekti rühma nagu ühte objekti.
- Dekoratsioon (Decorator): dünaamiliselt lisab objektidele uut käitumist ilma nende koodi muutmata.
- Fassaad (Facade): pakub ühtset liidest alamsüsteemide komplektile.
- Flyweight (Flyweight): säästab mälu, jagades ühise oleku paljude väikeste objektide vahel.
- Proxy (Proxy): pakub asendajat teisele objektile, et kontrollida sellele juurdepääsu.
Dekoratsiooni mustri näide:
# Põhikomponent
class Coffee:
def cost(self):
return 5
def description(self):
return "Tavaline kohv"
# Põhidekoratsioon
class CoffeDecorator:
def __init__(self, coffee):
self._coffee = coffee
def cost(self):
return self._coffee.cost()
def description(self):
return self._coffee.description()
# Konkreetne dekoratsioon
class MilkDecorator(CoffeDecorator):
def cost(self):
return self._coffee.cost() + 2
def description(self):
return self._coffee.description() + ", piimaga"
# Kasutamine
my_coffee = Coffee()
print(my_coffee.description(), "-", my_coffee.cost()) # Tavaline kohv - 5
coffee_with_milk = MilkDecorator(my_coffee)
print(coffee_with_milk.description(), "-", coffee_with_milk.cost()) # Tavaline kohv, piimaga - 7
Need mustrid tagavad paindlikkuse objekti kompositsiooni kaudu, võimaldades teha süsteemis muudatusi ilma olemasolevat koodi muutmata, kasutades pärandamist.