Какие знаешь паттерны ООП
Python
Senior
Без компании
Какие знаешь паттерны ООП
Ответы
В Python часто используются следующие паттерны ООП:
- **Singleton** – гарантирует единственный экземпляр класса.
```
class Singleton:
_instance = None
def __new__(cls):
if cls._instance is None:
cls._instance = super().__new__(cls)
return cls._instance
```
- **Фабричный метод** – делегирует создание объектов подклассам.
```
class Creator:
def factory_method(self):
raise NotImplementedError
class ConcreteCreator(Creator):
def factory_method(self):
return ConcreteProduct()
class Product:
pass
class ConcreteProduct(Product):
pass
```
- **Наблюдатель** – уведомляет подписчиков об изменениях.
```
class Subject:
def __init__(self):
self._observers = []
def attach(self, observer):
self._observers.append(observer)
def notify(self):
for observer in self._observers:
observer.update(self)
```
- **Декоратор** – добавляет поведение объектам динамически.
```
def decorator(func):
def wrapper(*args, **kwargs):
print("Доп. логика до вызова")
result = func(*args, **kwargs)
print("Доп. логика после вызова")
return result
return wrapper
```
Также популярны: **Адаптер**, **Стратегия**, **Фасад**, **Команда**.