Как отделяешь бизнес логику от данных
Python
Middle
Без компании
Как отделяешь бизнес логику от данных
Ответы
Разделение бизнес-логики и данных достигается через паттерны проектирования, такие как **Repository**, **Service Layer** или **Clean Architecture**.
- **Модели данных** (DTO/ORM) отвечают только за хранение и валидацию данных.
- **Сервисы** содержат бизнес-правила и операции.
- **Репозитории** абстрагируют доступ к данным (БД, API и т.д.).
Пример:
```
# Модель данных (Pydantic/Django ORM)
class User(models.Model):
name = models.CharField(max_length=100)
email = models.EmailField()
# Сервис (бизнес-логика)
class UserService:
def register_user(self, name, email):
if not self._validate_email(email):
raise ValueError("Invalid email")
user = User(name=name, email=email)
user.save()
return user
# Репозиторий (если нужна абстракция)
class UserRepository:
def save(self, user):
user.save()
```
Такой подход упрощает тестирование и модификацию кода.