Introdução
Olá, meu nome é Daniela Barazarte e quero dar as boas-vindas a esta explicação completa sobre o padrão de projeto do repositório.Esta explicação será tão simples e direta que até uma criança de 5 anos conseguiria entender.
Se você preferir vídeos, aqui está um tutorial completo feito por mim no YouTube: https://www.youtube.com/watch?v=b2tPRbQJing (está em espanhol)
Teoria
Lógica
"Padrão de design"
- Padrão: é um tipo de eventos ou objetos repetitivos
- Design: atividade criativa cujo objetivo é projetar objetos úteis e estéticos
"Repositório"
- Repositório: armazém ou local onde se guardam certas coisas
Definição simples
Padrões de design referem-se à ideia de que existem padrões ou soluções comuns e reutilizáveis que podem ser aplicados a problemas repetitivos no design de software. Chama-se “padrão” porque se repete em vários projetos, e design porque projeta objetos de forma simples.
O repositório é um padrão de design de software usado para separar o aplicativo (elementos de programação, como classes, interfaces, métodos) do armazenamento de dados (banco de dados) e funciona como um mediador entre os dois.
O repositório fornece um conjunto de métodos para executar operações CRUD (Criar, Ler, Atualizar, Excluir) nos dados.
Estrutura
- A parte superior desta imagem representa um sistema sem o padrão de design do repositório
- A parte inferior desta imagem representa um sistema com o padrão de design do repositório
Como você pode ver, o padrão de design do repositório ajuda a conectar a lógica do aplicativo (de ter os métodos e funções CRUD) com o banco de dados... e quando o repositório não está lá, a conexão é direta. O fato de o repositório estar presente como um intermediário é importante e você verá o porquê neste blog.
Prática
Exercício
Você tem um aplicativo WebAPI que possui métodos para criar, ler, editar e excluir bilhetes para uma estação de trem... tenha esses bilhetes armazenados em um banco de dados SQL.
Existem dois métodos para resolver a tarefa:
- Faça isso sem o padrão de design do repositório
- Faça isso com o padrão de design do repositório
Método: sem o padrão de design do repositório
Os métodos de armazenamento do banco de dados estariam junto com os métodos de ticket (criar, ler, editar e deletar tickets).
Método: com o padrão de design do repositório
Os métodos de armazenamento de banco de dados agora estão separados e não próximos aos métodos de ticket
Importância
O padrão de design do repositório tem vários benefícios:
- Separação de responsabilidades: O padrão de projeto Repository ajuda a separar a lógica de acesso a dados da lógica de negócios do aplicativo.
- Abstração: O padrão de projeto Repositório fornece uma camada de abstração entre o aplicativo e o mecanismo de armazenamento de dados. Essa camada de abstração facilita a troca para um mecanismo de armazenamento de dados diferente sem afetar o código do aplicativo que usa a interface do repositório.
- Encapsulação: O padrão de projeto do Repositório encapsula a lógica de acesso aos dados em um só lugar, facilitando o gerenciamento e a modificação.
- Testability: o padrão de design Repository facilita o teste da lógica de negócios do seu aplicativo, fornecendo uma implementação de repositório simulada que pode ser usada para testes de unidade.
- Escalabilidade: o padrão de projeto Repository pode ajudar a melhorar a escalabilidade de um aplicativo, fornecendo um local centralizado para gerenciar o acesso aos dados, o que pode ajudar a reduzir a contenção e melhorar o desempenho.
Gratidão
Muita obrigada por ler, se tiver alguma dúvida pode comentar, também pode me encontrar em minhas outras redes como Twitter, GitHub e LinkedIn
Estarei preparando um post no blog sobre como implementar Repository em C# e .NET então fique ligado <3
Top comments (2)
Opa, gostei do artigo e tenho uma dúvida: Do seu ponto de vista, seria recomendável adicionar algum tipo de validação nessa camada de repositório? Ou ela seria indicada somente para lidar com a lógica de acesso ao mecanismo de armazenamento?
Fico muito feliz que tenha gostado! Se você está se referindo à validação de dados, pessoalmente, recomendo que a validação seja feita na lógica de negócios para que eles não entrem no repositório caso não estejam corretos.