DDD, Anti Corruption layer, how-to?

W tej chwili musimy zbudować aplikację, która jest oparta na starszej. Kod dla tej starej aplikacji należy wyrzucić i przepisać na nowo, ale jak to zwykle bywa - zamiast przepisywać, musimy na niej oprzeć coś nowego. Ostatnio zdecydowaliśmy się przejść ścieżką DomainDrivenDesign. Warstwa antykorupcyjna może być rozwiązaniem naszych problemów. O ile rozumiem, w ten sposób powinno być możliwe stopniowe przepisywanie starej aplikacji.

Ale -- nie mogę znaleźć dobry przykład. Byłbym wdzięczny za wszelkie informacje.

Author: Svante, 2009-05-26

2 answers

W mojej konkretnej implementacji EmployeeAccessService jest wywoływana przez repozytorium. To naprawdę fasada w warstwie antykorupcyjnej. Jest ona przeznaczona dla pracowników. Adapter pobiera obiekt z modelu starszego (który pobiera z EmployeeAccessFacade),a następnie przekazuje go do Employeaccesstranslator, aby przekształcić obiekt z modelu starszego do obiektu domain w mojej aplikacji model.

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)
 10
Author: Troy Campano,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-05 20:38:54

From the Domain-Driven Design: Tackling Complexity in the Heart of Software) autor: Eric Evans:

Publiczny interfejs Warstwa antykorupcyjna pojawia się zwykle jako zestaw usług, chociaż czasami może przybrać formę byt.

I trochę później

Jeden ze sposobów organizacji projektowania warstwa antykorupcyjna jest jak połączenie fasad, adapterów (zarówno od Gamma et al. 1995), oraz Tłumacze, wraz z mechanizmy komunikacji i transportu zwykle potrzebne do rozmowy między systemy.

Możesz więc znaleźć przykłady patrząc na sugerowany wzór adaptera i wzór elewacji .

Postaram się sparafrazować to, co powiedział Eric Evans, twoja warstwa antykorupcyjna pojawi się jako usługi na zewnątrz Twojej warstwy. Więc poza warstwą antykorupcyjną inne warstwy nie będą wiedzieć, że "mówią" z antykorupcyjną warstwa. Wewnątrz warstwy można użyć adapterów i fasad, aby owinąć swoje starsze źródła informacji.

Więcej informacji o warstwie antykorupcyjnej:

 30
Author: Davy Landman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-04 14:31:49