DDD, Couche Anti-Corruption, comment faire?
pour le moment, nous avons à construire une application qui est basée sur un héritage. Le Code de cette ancienne application devrait être jeté et réécrit, mais comme il va généralement - au lieu de réécrire, nous devons baser quelque chose de nouveau sur elle. Récemment, nous avons décidé d'emprunter le chemin de la conception dirigée par domain. La couche anti-corruption pourrait être une solution à nos problèmes. Pour autant que je comprenne, il devrait être possible de réécrire progressivement l'ancienne application.
mais -- je ne peux pas trouver une bonne exemple. Je vous serais reconnaissant informations.
2 réponses
dans mon implémentation particulière, Employeeaccesservice est appelé par un dépôt. C'est vraiment une façade dans la couche anti-corruption. Il délègue à L'EmployeeAccessAdapter. L'adaptateur récupère un objet du modèle legacy (qu'il obtient de EmployeeAccessFacade), puis le transmet au transformateur Employeeaccess pour transformer l'objet du modèle legacy en objet domain dans l'application modèle.
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)
DDD livre (Domain-Driven Design: affronter la Complexité au Cœur de Logiciels) par Eric Evans:
l'interface publique du La couche ANTICORRUPTION apparaît habituellement comme un ensemble de SERVICES, bien que occasionnellement, elle peut prendre la forme de entité.
et un peu plus tard
une façon d'organiser la conception de la couche ANTICORRUPTION est combinaison de façades, adaptateurs (les deux D'après Gamma et al. 1995), et traducteurs, ainsi que la mécanismes de communication et de transport habituellement nécessaire pour parler entre système.
ainsi, vous pouvez trouver des exemples en regardant le motif de l'adaptateur et motif de façade.
je vais essayer de paraphraser ce qu'a dit Eric Evans, votre couche anti-corruption apparaîtra comme un service à l'extérieur de votre couche. Donc en dehors de la couche anti-corruption l'autre les couches ne sauront pas qu'elles" parlent " avec une couche anti-corruption. À l'intérieur de la couche, vous utiliserez des adaptateurs et des façades pour envelopper vos sources d'information héritées.
Plus d'informations sur la lutte contre la corruption de la couche: