Middle+
Какви са структурните модели за дизайн?
sobes.tech AI
Отговор от AI
Структурните шаблони за дизайн описват как класовете и обектите могат да бъдат комбинирани за създаване на по-големи структури. Те помагат за организиране на взаимодействието между обектите, правейки системата по-гъвкава и поддържана.
Някои често срещани структурни шаблони:
- Адаптер (Adapter): Позволява на класове с несъвместими интерфейси да работят заедно.
- Мост (Bridge): Разделя абстракцията от нейното изпълнение, позволявайки им да се променят независимо.
- Композит (Composite): Позволява да се разглежда група от обекти като един обект.
- Декоратор (Decorator): Динамично добавя ново поведение към обектите без да променя техния код.
- Фасада (Facade): Предоставя унифициран интерфейс към набор от интерфейси в подсистема.
- Flyweight (Flyweight): Спестява памет, споделяйки състояние между множество малки обекти.
- Proxy (Proxy): Предоставя заместител за друг обект за контрол на достъпа до него.
Пример за използване на шаблона Декоратор:
# Основен компонент
class Coffee:
def cost(self):
return 5
def description(self):
return "Обикновено кафе"
# Основен декоратор
class CoffeeDecorator:
def __init__(self, coffee):
self._coffee = coffee
def cost(self):
return self._coffee.cost()
def description(self):
return self._coffee.description()
# Конкретен декоратор
class MilkDecorator(CoffeeDecorator):
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
Тези шаблони осигуряват гъвкавост чрез използване на композиция на обекти вместо наследяване, което позволява да се правят промени в системата без да се променя съществуващият код.