DDD, антикоррупционный слой, как?
на данный момент, мы должны создать приложение, которое основано на устаревшей одна. Код для этого старого приложения должен быть выброшен и переписан, но, как обычно, вместо того, чтобы переписывать его, нам нужно основывать на нем что - то новое. Недавно мы решили пойти по пути DomainDrivenDesign. Итак ... антикоррупционный слой может быть решением наших проблем. Насколько я понимаю, таким образом можно будет постепенно переписать старое приложение.
Но ... Я не могу найти хорошего примера. Я был бы признателен любой информация.
2 ответов
в моей конкретной реализации EmployeeAccessService вызывается репозиторием. Это действительно фасад Антикоррупционного слоя. Оно делегирует к EmployeeAccessAdapter. Адаптер извлекает объект из устаревшей модели (который он получает от EmployeeAccessFacade), затем передает его EmployeeAccessTranslator для преобразования объекта из устаревшей модели в объект домена в моем приложении модель.
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 book (Domain-Driven Design: решение сложности в основе программного обеспечения) Эрик Эванс:
открытый интерфейс Антикоррупционный слой обычно появляется как набор услуг, хотя иногда он может принимать форму сущность.
и чуть позже
один из способов организации проектирования антикоррупционной слой как комбинация фасадов, Адаптеры (оба из Gamma et al. 1995), и переводчики, наряду с механизмы связи и транспорта обычно нужно поговорить между системный.
Итак, вы можете найти примеры, посмотрев на предложенный шаблон адаптер и фасад шаблон.
Я попытаюсь перефразировать то, что сказал Эрик Эванс, ваш антикоррупционный слой будет отображаться как услуги за пределами вашего слоя. Так что вне антикоррупционного слоя другие слои не будут знать, что они" говорят " с антикоррупционным слоем. Внутри слоя вы будете использовать адаптеры и фасады, чтобы обернуть устаревшие источники информации.
дополнительная информация о Антикоррупционном слое: