DEV Community

Cover image for Padrão de Design: Repositório | Explicação completa e simples
Daniela "Ingeniela" Barazarte
Daniela "Ingeniela" Barazarte

Posted on

Padrão de Design: Repositório | Explicação completa e simples

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 Repositório de padrões de design
  • 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

Repositório com vs sem

  • 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:

  1. Faça isso sem o padrão de design do repositório
  2. Faça isso com o padrão de design do repositório

Método: sem o padrão de design do repositório

Sem padrão de design de 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
Com padrão de design de 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)

Collapse
 
otavio99 profile image
otavio99

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?

Collapse
 
ingeniela profile image
Daniela "Ingeniela" Barazarte

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.