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