O projeto agora precisa de uma organização melhor, para isso vamos mover as interfaces de repositório para uma pasta dentro de interfaces chamada Repositories e criar uma nova pasta de Serviços

Untitled

Dentro da pasta services vamos criar uma interface generica de Serviço Nota: Para entender melhor o motivo dessa separação precisamos entender a diferença entre repositório e serviço. Repositório é onde os dados são guardados (Banco de dados) e o Serviço é quem manipula esses dados. Em uma comparação com uma situação do mundo real, temos que, se você guarda seu dinheiro em um banco, o banco é o repositório. O Caixa que deposita, saca, etc é o serviço.

Untitled

Vamos criar um repositório especializado de Cliente

Untitled

E outro repositório especializado de Produto

Untitled

Com isso podemos criar a Classe concreta de Serviço generico, que vai utilizar da injeção de dependencia para injetar o Repositório concreto na classe de serviço.

Untitled

Pagina 11 ⏩

Pagina 13 ⏩