DDD, anti strato di corruzione, how-to?
-
05-09-2019 - |
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.
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: