Middle+
Šta su strukturni obrasci dizajna?
sobes.tech АИ
Одговор од АИ
Strukturni obrasci dizajna opisuju kako klase i objekti mogu biti kombinovani za izgradnju većih struktura. Oni pomažu u organizaciji interakcije između objekata, čineći sistem fleksibilnijim i lakšim za održavanje.
Neki od uobičajenih strukturnih obrazaca:
- Adapter (Adapter): Omogućava rad klasa sa nespojivim interfejsima zajedno.
- Most (Bridge): Odvajanje apstrakcije od njene implementacije, omogućavajući im da se menjaju nezavisno.
- Kompozit (Composite): Omogućava tretiranje grupe objekata kao jednog objekta.
- Dekorator (Decorator): Dinamički dodaje novo ponašanje objektima bez promene njihovog koda.
- Fasad (Facade): Pruža ujedinjeni interfejs za skup interfejsa u podsistemu.
- Flyweight (Flyweight): Štedi memoriju deleći zajedničko stanje između mnogo malih objekata.
- Proxy (Proxy): Pruža zamenu za drugi objekat za kontrolu pristupa njemu.
Primer korišćenja obrasca Dekorator:
# Osnovni komponent
class Coffee:
def cost(self):
return 5
def description(self):
return "Obična kafa"
# Osnovni dekorator
class CoffeeDecorator:
def __init__(self, coffee):
self._coffee = coffee
def cost(self):
return self._coffee.cost()
def description(self):
return self._coffee.description()
# Konkreta dekorator
class MilkDecorator(CoffeeDecorator):
def cost(self):
return self._coffee.cost() + 2
def description(self):
return self._coffee.description() + ", sa mlekom"
# Upotreba
my_coffee = Coffee()
print(my_coffee.description(), "-", my_coffee.cost()) # Obična kafa - 5
coffee_with_milk = MilkDecorator(my_coffee)
print(coffee_with_milk.description(), "-", coffee_with_milk.cost()) # Obična kafa, sa mlekom - 7
Ovi obrasci pružaju fleksibilnost korišćenjem kompozicije objekata umesto nasleđivanja, što omogućava promene u sistemu bez izmene postojećeg koda.