Middle+
Kas yra struktūriniai projektavimo modeliai?
sobes.tech AI
Atsakymas iš AI
Struktūriniai projektavimo modeliai aprašo, kaip klasės ir objektai gali būti sujungti, kad būtų sukurtos didesnės struktūros. Jie padeda organizuoti sąveiką tarp objektų, padarydami sistemą lankstesnę ir lengviau prižiūrimą:
Kai kurie dažni struktūriniai modeliai:
- Adapteris (Adapter): leidžia dirbti kartu nesuderinamiems sąsajoms.
- Tiltas (Bridge): atskiria abstrakciją nuo jos įgyvendinimo, leidžiant jiems keistis nepriklausomai.
- Kompozitas (Composite): leidžia laikyti grupę objektų taip pat, kaip ir vieną objektą.
- Dekoratorius (Decorator): dinamiškai prideda naują elgesį objektams be jų kodo keitimo.
- Fasadas (Facade): suteikia vieningą sąsają prie sub-sistemų rinkinio.
- Flyweight (Flyweight): taupo atmintį dalindamasis bendrą būseną tarp daugelio mažų objektų.
- Proxy (Proxy): teikia pakaitalą kitam objektui, kad kontroliuotų prieigą prie jo.
Dekoaratoriaus modelio pavyzdys:
# Pagrindinis komponentas
class Coffee:
def cost(self):
return 5
def description(self):
return "Įprasta kava"
# Pagrindinis dekoratorius
class CoffeDecorator:
def __init__(self, coffee):
self._coffee = coffee
def cost(self):
return self._coffee.cost()
def description(self):
return self._coffee.description()
# Konkretus dekoratorius
class MilkDecorator(CoffeDecorator):
def cost(self):
return self._coffee.cost() + 2
def description(self):
return self._coffee.description() + ", su pienu"
# Naudojimas
my_coffee = Coffee()
print(my_coffee.description(), "-", my_coffee.cost()) # Įprasta kava - 5
coffee_with_milk = MilkDecorator(my_coffee)
print(coffee_with_milk.description(), "-", coffee_with_milk.cost()) # Įprasta kava, su pienu - 7
Šie modeliai užtikrina lankstumą naudojant objektų kompoziciją, leidžiantį keisti sistemą be esamo kodo keitimo, naudojant paveldėjimą.