Наведи приклад класу, що дотримується SRP
Клас, що дотримується SRP, вирішує лише одне завдання і має лише одну причину для зміни.
Нижче приклад, де відповідальність створення замовлення виділена в окремий клас, без логування і сповіщень:
python
class OrderCreator:
def __init__(self, repository):
self.repository = repository
def create(self, order_data):
self._validate(order_data)
return self.repository.save(order_data)
def _validate(self, data):
# перевірка коректності даних замовлення
if "email" not in data or "items" not in data:
raise ValueError("Некоректні дані замовлення")Чому цей клас дотримується SRP
- Єдина відповідальність - створення замовлення Він займається тільки перевіркою даних і збереженням замовлення через переданий репозиторій.
- Одна причина для зміни Змінювати цей клас потрібно тільки якщо змінюються правила створення або валідації замовлення.
- Немає інфраструктурних обов'язків Він не надсилає листи, не пише логи, не працює із зовнішніми системами - усе це поза його зоною відповідальності.
- Логіка сфокусована і легко тестується Достатньо підмінити репозиторій - і клас тестується повністю ізольовано.
Такий клас відображає суть SRP: одне завдання → один модуль → одна причина для зміни.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.