Skip to main content

Наведи приклад порушення SRP

Порушення SRP виникає, коли один клас бере на себе різні обов'язки, що належать до різних шарів або аспектів системи. Приклад:

Приклад класу, що порушує SRP

python
class OrderService: def create_order(self, order_data): # бізнес-логіка створення замовлення self._validate(order_data) self._save_to_db(order_data) # відправка сповіщення клієнту self._send_email(order_data["email"]) # запис у лог-файл with open("orders.log", "a") as f: f.write(f"Order created: {order_data}\n") def _validate(self, data): ... def _save_to_db(self, data): ... def _send_email(self, email): ...

Розбір порушення

  1. Бізнес-логіка Методи create_order, _validate, _save_to_db належать до домену «замовлення».
  2. Сповіщення Метод _send_email належить до комунікацій - це інша відповідальність.
  3. Логування Запис у orders.log належить до інфраструктури - третя відповідальність.

У результаті клас має три причини для зміни:

  • змінився процес створення замовлення → потрібно змінювати клас;
  • змінився формат email-сповіщень → потрібно змінювати той самий клас;
  • змінилися вимоги до логування → потрібно змінювати знову той самий клас.

Це пряме порушення SRP.

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

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

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