1
resposta

Interface e Classe default para a implementação do CRUD

Bom... Ao meu ver criar duas interfaces é para realizar as operações de CRUD é um pouco ruim.

Poderíamos simplesmente deixar como estava o IDAO.cs e criar uma classe abstrata default que implementaria esse padrão com os métodos podendo ser reescritos (override), depois as demais classes herdariam essa classe default utilizando os métodos de interesse de acordo com a regra de negócio do sistema.

Isso é apenas uma sugestão! E se eu estiver errado pensando assim, por favor me corrija.

Abraços!

1 resposta

Olá Marcelo, tudo bem?

Obrigada por compartilhar sua dúvida sobre a implementação do CRUD utilizando interfaces e classes default.

Sua sugestão de criar uma classe abstrata default que implemente os métodos do CRUD e permita que as demais classes herdem essa implementação é uma abordagem válida. Isso pode ajudar a evitar a repetição de código nas classes que implementam o CRUD.

No entanto, as interfaces têm como objetivo principal definir um contrato, ou seja, estabelecer quais métodos devem ser implementados pelas classes que a implementam. Ao criar uma classe default que implementa os métodos do CRUD, você estaria fornecendo uma implementação padrão para esses métodos, o que pode diminuir a flexibilidade e a coesão das interfaces.

No contexto apresentado, a aula/exercício fala sobre a importância da coesão nas interfaces. O instrutor sugere separar a interface em duas: uma para escrita (ICommand) e outra para leitura (IQuery). Essa separação visa garantir que cada interface tenha uma única responsabilidade e seja coesa.

Portanto, considere a coesão das interfaces ao implementar o CRUD. Se a sua classe default consegue manter a coesão e a flexibilidade necessárias, você pode utilizá-la. Caso contrário, é recomendado seguir a sugestão do instrutor e separar as interfaces em ICommand e IQuery.

Espero ter esclarecido sua dúvida! Se tiver mais alguma pergunta, é só me dizer.

Espero ter ajudado e bons estudos!