Digamos que eu estou tendo um modelo de domínio e quero lê-lo e salvá-lo de qualquer camada de persistência - no momento, pode ser um arquivo json, mas no futuro pode ser xml ou um banco de dados (que também pode mudar de tipo )
Para gerar o modelo de domínio a partir da camada de persistência, eu tenho uma implementação de uma interface simples que, digamos, contém um getAll()
e saveAll()
método. Se eu quiser mudar para outro tipo de persistência, posso simplesmente mudar a implementação da interface. No entanto, dentro da implementação, usarei soluções completamente diferentes para ler e armazenar os dados, então terei que usar objetos diferentes de outras bibliotecas para lidar com os dados.
Digamos que eu use um serializador Json na primeira implementação, instanciarei a instância desse serializador diretamente na minha implementação. Isso levará à minha implementação diretamente, dependendo do serializador, nunca posso dar outro. Mas isso não seria possível de qualquer maneira, porque não há interface universal para serializadores (ou qualquer tipo de persistência). Portanto, se eu quiser usar um serializador diferente, a única coisa que posso fazer é escrever uma implementação completamente nova, em vez de apenas passar outra externamente.
Então, não há problema em codificar dependências nesse caso? Ou existe uma opção melhor?