Repository
Definição
O padrão Repository atua como uma camada intermediária entre a lógica de negócio e a fonte de dados. Ele centraliza o acesso a objetos persistidos e fornece uma interface limpa para consultar, salvar ou atualizar objetos.
Esse padrão esconde os detalhes da persistência (como SQL ou ORM), permitindo que a lógica de negócio use os dados como se estivesse trabalhando com uma coleção em memória.
Por que é importante
Ao usar o Repository, o código de negócio não precisa se preocupar com como os dados são armazenados ou recuperados. Isso melhora o isolamento das responsabilidades, facilita testes e permite trocar a tecnologia de persistência sem afetar outras partes do sistema.
É um padrão comum em aplicações que usam bancos de dados e frameworks ORM, como Django, SQLAlchemy ou Entity Framework.
Exemplo prático (Python)
Vamos simular um repositório simples para gerenciar objetos
Usuario
, abstraindo o acesso aos dados com uma estrutura em
memória:
# Entidade de domínio
class Usuario:
def __init__(self, id, nome):
self.id = id
self.nome = nome
# Repositório
class UsuarioRepository:
def __init__(self):
self.usuarios = {}
def salvar(self, usuario: Usuario):
self.usuarios[usuario.id] = usuario
def obter_por_id(self, id):
return self.usuarios.get(id)
def listar_todos(self):
return list(self.usuarios.values())
Uso da interface de repositório:
repo = UsuarioRepository()
repo.salvar(Usuario(1, "Alice"))
repo.salvar(Usuario(2, "Bob"))
usuario = repo.obter_por_id(1)
print(usuario.nome) # Alice
for u in repo.listar_todos():
print(u.nome)
A lógica de negócio interage com o repositório sem saber se os dados vêm de um banco, arquivo ou memória. Isso permite maior flexibilidade e facilidade para testes.