Ответ
В Чистой архитектуре (Clean Architecture) поток управления направлен от внешних слоёв к внутренним.
Это означает, что выполнение обычно инициируется внешним событием (например, HTTP-запрос от пользователя) и движется вглубь системы для обработки.
Типичная последовательность:
- Presentation / Frameworks (внешний слой): Контроллер получает запрос.
- Application / Use Cases (промежуточный слой): Контроллер вызывает соответствующий сервис или сценарий использования (Use Case).
- Domain / Entities (внутренний слой): Сервис использует доменные сущности для выполнения основной бизнес-логики.
Пример потока:
# 3. Внутренний слой (Domain)
class User:
def __init__(self, name: str):
if not name:
raise ValueError("Name cannot be empty")
self.name = name
# 2. Промежуточный слой (Application)
class UserService:
def __init__(self, user_repository):
self.user_repository = user_repository
def create_user(self, name: str) -> User:
user = User(name) # Выполняется бизнес-логика домена
self.user_repository.save(user)
return user
# 1. Внешний слой (Presentation)
class UserController:
def __init__(self, user_service: UserService):
self.user_service = user_service
def handle_request(self, data: dict):
# Поток начинается здесь
try:
user = self.user_service.create_user(data['name'])
return {"status": "success", "user_id": user.id}
except ValueError as e:
return {"status": "error", "message": str(e)}
Таким образом, поток управления инициируется извне (UserController) и делегируется внутренним слоям (UserService, User) для выполнения работы.