Наведи приклад порушення 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):
...Розбір порушення
- Бізнес-логіка
Методи
create_order,_validate,_save_to_dbналежать до домену «замовлення». - Сповіщення
Метод
_send_emailналежить до комунікацій - це інша відповідальність. - Логування
Запис у
orders.logналежить до інфраструктури - третя відповідальність.
У результаті клас має три причини для зміни:
- змінився процес створення замовлення → потрібно змінювати клас;
- змінився формат email-сповіщень → потрібно змінювати той самий клас;
- змінилися вимоги до логування → потрібно змінювати знову той самий клас.
Це пряме порушення SRP.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.