Sobes.tech
Middle+

Курулуштук дизайн үлгүлөрү эмнелер?

sobes.tech AI

AIден жооп

Курулуштук үлгүлөрү дизайндери класстар жана объекттер кандайча бириктирилиши мүмкүн экенин сүрөттөйт, чоңураак түзүмдөрдү куруу үчүн. Алар объекттердин өз ара аракеттенүүсүн уюштурууга жардам берет, системаны ийкемдүү жана оңдоого жеңил кылат:

Кээ бир кеңири тараган курулуштук үлгүлөр:

  • Адаптер (Adapter): Бирикпеген интерфейстер менен бирге иштөөгө мүмкүндүк берет.
  • Көпүрө (Bridge): Абстракцияны анын ишке ашырылышынан ажыратат, аларды көз карандысыз өзгөртүүгө мүмкүндүк берет.
  • Композит (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

Бул үлгүлөр объекттердин композициясын колдонуу аркылуу ийкемдүүлүк камсыздайт, мурас алмаштырып, системада өзгөртүүлөрдү жасоого мүмкүндүк берет, ал эми коду өзгөртүлбөйт.