DDD, Anti capa de la Corrupción, de cómo hacerlo?
-
05-09-2019 - |
Pregunta
Por el momento, tenemos que construir una aplicación que se basa en un legado uno. Código para que el viejo solicitud debe ser desechado y se reescribe, pero a medida que va generalmente - en lugar de volver a escribir, tenemos que basar algo nuevo en él. Recientemente, decidimos ir el camino DomainDrivenDesign. Por lo tanto - la capa contra la corrupción podría ser una solución para nuestros problemas. Por lo que yo entiendo, de esta manera, debería ser posible volver a escribir gradualmente la aplicación antigua.
Pero - No puedo encontrar ningún buen ejemplo. Le agradecería CUALQUIER información.
Solución
En mi implementación particular, EmployeeAccessService es llamado por un Repositorio. Es realmente una fachada en la capa anti-corrupción. Se delega en el EmployeeAccessAdapter. El adaptador obtiene un objeto del modelo de herencia (que se obtiene de EmployeeAccessFacade), y luego se lo entrega al EmployeeAccessTranslator para transformar el objeto del modelo de herencia al objeto de dominio en el modelo de mi solicitud.
EmployeeAccessService
public Employee findEmployee(String empID){
return adapter.findEmployee(empID);
}
EmployeeAccessAdapter
public Employee findEmployee(String empID){
EmployeeAccessContainer container = facade.findEmployeeAccess(empID);
return translator.translate(container);
}
EmployeeAccessTranslator
public Employee translate(EmployeeAccessContainer container){
Employee emp = null;
if (container != null) {
employee = new Employee();
employee.setEmpID(idPrefix + container.getEmployeeDTO().getEmpID());
...(more complex mappings)
Otros consejos
Desde la libro DDD (Domain-Driven Design: afrontar la complejidad en el corazón de software) por Eric Evans:
La interfaz pública de la suele aparecer CAPA DE ANTICORRUPCIÓN como un conjunto de servicios, aunque en ocasiones puede tomar la forma de una entidad.
y un poco más tarde
Una manera de organizar el diseño de la CAPA ANTICORRUPCIÓN es como una combinación de fachadas, de los adaptadores (tanto de Gamma et al. 1995), y traductores, junto con el mecanismos de comunicación y transporte por lo general se necesita para hablar entre sistemas.
Por lo tanto, es posible encontrar ejemplos mirando el adapter y patrón fachada .
Voy a tratar de parafrasear lo que dijo Eric Evans, su capa anti-corrupción aparecerá como servicios a la parte exterior de su capa. Así exterior de la capa anti-corrupción de las otras capas no sabrán que están "hablando" con una capa anti-corrupción. En el interior de la capa que usaría adaptadores y fachadas para envolver sus fuentes de información heredados.
Más información sobre la capa anti-corrupción: