Arquitetura Hexagonal
A arquitetura hexagonal ajuda a criar código mais testável e manutenível, isolando a lógica de negócio das dependências externas.
Estrutura
project/
├── domain/
│ ├── models/
│ │ └── user.py
│ └── services/
│ └── user_service.py
├── adapters/
│ ├── in/
│ │ └── web/
│ │ └── user_controller.py
│ └── out/
│ └── persistence/
│ └── user_repository.py
└── main.pyDomain Model
# domain/models/user.py
from dataclasses import dataclass
@dataclass
class User:
id: int
name: str
email: str
def is_valid(self) -> bool:
return '@' in self.email and len(self.name) > 0Repository Interface
# domain/repositories/user_repository.py
from abc import ABC, abstractmethod
class UserRepository(ABC):
@abstractmethod
def save(self, user: User) -> User:
pass
@abstractmethod
def find_by_id(self, user_id: int) -> User:
pass
0 comments