Question

À l'heure actuelle, nous devons construire une application qui est basée sur un héritage un. Code pour cette ancienne application devrait être jeté et réécrite, mais comme il va généralement - au lieu de le réécrire, nous avons besoin de fonder quelque chose de nouveau sur elle. Récemment, nous avons décidé d'aller le chemin DomainDrivenDesign. Donc - couche anti-corruption pourrait être une solution pour nos problèmes. Pour autant que je comprends, cette façon, il devrait être possible de réécrire progressivement l'ancienne application.

Mais - je ne peux pas trouver un bon exemple. Je vous serais reconnaissant ANY informations .

Était-ce utile?

La solution

Dans ma mise en œuvre particulière, EmployeeAccessService est appelé par un dépôt. Il est vraiment une façade dans la couche anti-corruption. Il délègue au EmployeeAccessAdapter. L'adaptateur va chercher un objet à partir du modèle existant (dont il tire de EmployeeAccessFacade), puis passe à la EmployeeAccessTranslator pour transformer l'objet du modèle existant à l'objet de domaine dans le modèle de mon application.

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)

Autres conseils

De livre DDD (Domain-Driven Design: Tackling la complexité dans le coeur du logiciel) par Eric Evans:

  

L'interface publique du   COUCHE CORRUPTION apparaît généralement   comme un ensemble de services, bien   parfois il peut prendre la forme de   une entité.

et un peu plus tard

  

Une façon d'organiser la conception de   la Couche anticorruption est en   combinaison des façades, des adaptateurs (à la fois   de Gamma et al. 1995), et   traducteurs, avec le   des mécanismes de communication et de transport   habituellement nécessaire pour parler entre   systèmes.

Ainsi, vous pouvez trouver des exemples en regardant le modèle suggéré href="http://en.wikipedia.org/wiki/Adapter_pattern" et motif de façade .

Je vais essayer de paraphraser ce que Eric Evans a dit, votre couche anti-corruption apparaîtra en tant que services à l'extérieur de votre couche. Donc, en dehors de la couche anti-corruption les autres couches ne savent qu'ils sont « parler » avec une couche anti-corruption. A l'intérieur de la couche que vous utilisez des adaptateurs et des façades pour envelopper vos sources d'information existantes.

Plus d'informations sur la couche anti-corruption:

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top