Sobes.tech
Middle+

Kas ir strukturālie projektēšanas modeļi?

sobes.tech AI

Atbilde no AI

Strukturālie dizaina modeļi apraksta, kā klases un objekti var tikt apvienoti, lai veidotu lielākas struktūras. Tie palīdz organizēt mijiedarbību starp objektiem, padarot sistēmu elastīgāku un uzturējamāku:

Daži izplatīti strukturālie modeļi:

  • Adapteris (Adapter): ļauj kopā strādāt nesaderīgiem interfeisiem.
  • Tilts (Bridge): atdala abstrakciju no tās realizācijas, ļaujot tām mainīties neatkarīgi.
  • Kompozīts (Composite): ļauj uzskatīt objekta grupu tāpat kā vienu objektu.
  • Dekorators (Decorator): dinamiski pievieno jaunu uzvedību objektiem bez to koda maiņas.
  • Fasāde (Facade): nodrošina vienotu interfeisu apakšsistēmas interfeisiem.
  • Flyweight (Flyweight): taupa atmiņu, daloties kopīgā stāvoklī starp daudziem maziem objektiem.
  • Proxy (Proxy): nodrošina aizstājēju citam objektam, lai kontrolētu piekļuvi tam.

Dekoratora modeļa piemērs:

# Pamatkomponents
class Coffee:
    def cost(self):
        return 5

    def description(self):
        return "Parasta kafija"

# Pamatdekorators
class CoffeDecorator:
    def __init__(self, coffee):
        self._coffee = coffee

    def cost(self):
        return self._coffee.cost()

    def description(self):
        return self._coffee.description()

# Konkrēts dekorators
class MilkDecorator(CoffeDecorator):
    def cost(self):
        return self._coffee.cost() + 2

    def description(self):
        return self._coffee.description() + ", ar pienu"

# Lietošana
my_coffee = Coffee()
print(my_coffee.description(), "-", my_coffee.cost()) # Parasta kafija - 5

coffee_with_milk = MilkDecorator(my_coffee)
print(coffee_with_milk.description(), "-", coffee_with_milk.cost()) # Parasta kafija, ar pienu - 7

Šie modeļi nodrošina elastību, izmantojot objektu kompozīciju, ļaujot veikt izmaiņas sistēmā bez esošā koda maiņas, izmantojot mantošanu.