Sobes.tech
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.