Digamos que tengo un modelo de dominio y quiero leerlo y guardarlo desde cualquier capa de persistencia; en este momento podría ser un archivo json pero en el futuro podría ser xml o una base de datos (que también podría cambiar en su tipo )
Para generar el dominio de modelo de la capa de persistencia, tengo una implementación de una simple interfaz que, digamos, contiene de un getAll()
y saveAll()
método. Si quiero cambiar a otro tipo de persistencia, simplemente puedo cambiar la implementación de la interfaz. Sin embargo, dentro de la implementación usaré soluciones completamente diferentes para leer y almacenar los datos, por lo que tendré que usar diferentes objetos de otras bibliotecas para manejar los datos.
Digamos que uso un serializador Json en la primera implementación, luego instanciaré la instancia de ese serializador en mi implementación directamente. Esto conducirá a mi implementación directamente dependiendo de ese serializador, nunca puedo darle otro. Pero esto no sería posible de todos modos, porque no hay una interfaz universal para los serializadores (o cualquier tipo de persistencia). Entonces, si quiero usar un serializador diferente, lo único que puedo hacer es escribir una implementación completamente nueva en lugar de simplemente pasar otra desde el exterior.
Entonces, ¿está bien codificar dependencias en este caso? ¿O hay una mejor opción?
fuente