Sobes.tech
Middle+

Ի՞նչ են կառուցվածքային նախագծման օրինակները։

sobes.tech AI

Պատասխան AI-ից

Կառուցվածքային նախագծային պատկերները նկարագրում են, թե ինչպես կարող են դասերը և օբյեկտները համատեղվել՝ ավելի մեծ կառուցվածքներ ստեղծելու համար: Դրանք օգնում են կազմակերպել փոխազդեցությունը օբյեկտների միջև՝ դարձնելով համակարգը ավելի ճկուն և պահպանվող:

Некоторые распространенные структурные паттерны:

  • Ադապտեր (Adapter): Позволяет работать вместе классам с несовместимыми интерфейсами.
  • Կապ (Bridge): Անջատում է աբստրակցիան իր իրականացմանից՝ թույլ տալով նրանց փոփոխվել անկախ one from the other.
  • Կոմպոզիտ (Composite): Позволяет рассматривать группу объектов так же, как и один объект.
  • Դեկորատոր (Decorator): Դինամիկորեն ավելացնում է նոր վարքագիծ օբյեկտներին՝ առանց նրանց կոդը փոխելու:
  • Ֆասադ (Facade): Առաջադրում է միացյալ ինտերֆեյս՝ ենթաբազմության ինտերֆեյսների հավաքածուի համար:
  • Ֆլայվեյթ (Flyweight): Զարգացնում է հիշողությունը՝ բաժանելով ընդհանուր վիճակը բազմաթիվ փոքր օբյեկտների միջև:
  • Պրոքսի (Proxy): Առաջադրում է փոխարինող՝ վերահսկելու համար մյուս օբյեկտին մուտքը:

Օրինակ՝ Դեկորատոր պատկերի կիրառումը:

# Բազային կոմպոնենտ
class Coffee:
    def cost(self):
        return 5

    def description(self):
        return "Սովորական սուրճ"

# Բազային դեկորատոր
class CoffeDecorator:
    def __init__(self, coffee):
        self._coffee = coffee

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

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

# կոնկրետ դեկորատոր
class MilkDecorator(CoffeDecorator):
    def cost(self):
        return self._coffee.cost() + 2

    def description(self):
        return self._coffee.description() + ", կաթով"

# Օգտագործում
my_coffee = Coffee()
print(my_coffee.description(), "-", my_coffee.cost()) # Սովորական սուրճ - 5

coffee_with_milk = MilkDecorator(my_coffee)
print(coffee_with_milk.description(), "-", coffee_with_milk.cost()) # Սովորական սուրճ, կաթով - 7

Այս ձևանմուշները ապահովում են ճկունություն՝ օգտագործելով օբյեկտների կոմպոզիցիա՝ ժառանգության փոխարեն, ինչը թույլ է տալիս կատարել փոփոխություններ համակարգում՝ առանց առկա կոդը փոխելու։