Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Наведи приклад класу, що дотримується SRP». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**Клас, що дотримується SRP**, вирішує лише одне завдання і має лише одну причину для зміни. **Ключове:** достатньо підмінити репозиторій - і клас тестується повністю ізольовано.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)ЗображенняКлас, що дотримується 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: одне завдання → один модуль → одна причина для зміни.Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.