Domanda

Al momento, dobbiamo costruire un programma che si basa su un lascito uno. Codice per quella vecchia applicazione deve essere gettato via e riscritto, ma come di solito va - invece di riscriverlo, abbiamo bisogno di qualcosa di nuovo basare su di esso. Recentemente, abbiamo deciso di andare il percorso DomainDrivenDesign. Così - contro strato di corruzione potrebbe essere una soluzione per i nostri problemi. Per quanto ho capito, in questo modo dovrebbe essere possibile riscrivere gradualmente la vecchia applicazione.

Ma - non riesco a trovare alcun buon esempio. Gradirei ANY le informazioni.

È stato utile?

Soluzione

Nel mio particolare implementazione, EmployeeAccessService è chiamato da un repository. E 'davvero una facciata nello strato anti-corruzione. Si delegati al EmployeeAccessAdapter. L'adattatore va a prendere un oggetto dal modello legacy (che si ottiene da EmployeeAccessFacade), poi passa al EmployeeAccessTranslator di trasformare l'oggetto dal modello legato alla oggetto di dominio nel modello di mia applicazione.

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)

Altri suggerimenti

Da il DDD libro (Domain-Driven Design: Affronto complessità nel cuore di Software) da Eric Evans:

  

L'interfaccia pubblica della   Anticorruzione STRATO solito appare   come un insieme di servizi, pur   occasionalmente, può assumere la forma di   un'entità.

e un po 'più tardi

  

Un modo di organizzare la progettazione di   LIVELLO corruzione è come   combinazione di facciate, adattatori (entrambi   di Gamma et al. 1995), e   traduttori, insieme con la   meccanismi di comunicazione e di trasporto   di solito necessario per parlare tra   sistemi.

Quindi, si potrebbe trovare esempi, cercando in modello adattatore e modello facciata .

Cercherò di parafrasare quello che ha detto Eric Evans, il vostro livello di lotta alla corruzione apparirà come servizi al di fuori del proprio livello. Quindi al di fuori dello strato anticorruzione gli altri livelli non sapere che stanno "parlando" con uno strato anti-corruzione. All'interno dello strato si usa adattatori e facciate di avvolgere le precedenti fonti di informazione.

Maggiori informazioni sulla strato di lotta alla corruzione:

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top