Skip to main content

Наведи приклад класу, що дотримується 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

  1. Єдина відповідальність - створення замовлення Він займається тільки перевіркою даних і збереженням замовлення через переданий репозиторій.
  2. Одна причина для зміни Змінювати цей клас потрібно тільки якщо змінюються правила створення або валідації замовлення.
  3. Немає інфраструктурних обов'язків Він не надсилає листи, не пише логи, не працює із зовнішніми системами - усе це поза його зоною відповідальності.
  4. Логіка сфокусована і легко тестується Достатньо підмінити репозиторій - і клас тестується повністю ізольовано.

Такий клас відображає суть SRP: одне завдання → один модуль → одна причина для зміни.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.