Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Плохой пример
- class OrderRepository:
- def save(self, order_data):
- # Метод сохраняет заказ
- pass
- def rollback(self):
- # Метод откатывает транзакцию
- pass
- class SQLOrderRepository(OrderRepository):
- def save(self, order_data):
- print("Saving order in SQL database")
- # Логика для сохранения в SQL базе данных
- def rollback(self):
- print("Rolling back SQL transaction")
- # Логика для отката транзакции в SQL
- class NoSQLOrderRepository(OrderRepository):
- def save(self, order_data):
- print("Saving order in NoSQL database")
- # Логика для сохранения в NoSQL базе данных
- def rollback(self): # Нарушение LSP, т.к. NoSQL базы могут не поддерживать транзакции
- raise NotImplementedError("Rollback is not supported in NoSQL databases")
- # Хороший пример
- from abc import ABC, abstractmethod
- # Базовый класс для всех репозиториев
- class OrderRepository(ABC):
- @abstractmethod
- def save(self, order_data):
- pass
- # Интерфейс для транзакционных репозиториев
- class TransactionalRepository(OrderRepository):
- @abstractmethod
- def rollback(self):
- pass
- # SQL-репозиторий, поддерживающий транзакции
- class SQLOrderRepository(TransactionalRepository):
- def save(self, order_data):
- print("Saving order in SQL database")
- # Логика для сохранения в SQL базе данных
- def rollback(self):
- print("Rolling back SQL transaction")
- # Логика для отката транзакции в SQL
- # NoSQL-репозиторий без поддержки транзакций
- class NoSQLOrderRepository(OrderRepository):
- def save(self, order_data):
- print("Saving order in NoSQL database")
- # Логика для сохранения в NoSQL базе данных
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement