DDD, уровень защиты от коррупции, инструкции?
-
05-09-2019 - |
Вопрос
На данный момент нам нужно создать приложение, основанное на устаревшем приложении.Код этого старого приложения следует выбросить и переписать, но, как обычно, вместо того, чтобы переписывать его, нам нужно основывать на нем что-то новое.Недавно мы решили пойти по пути DomainDrivenDesign.Итак, уровень борьбы с коррупцией может стать решением наших проблем.Насколько я понимаю, таким образом должна быть возможность постепенно переписать старое приложение.
Но... я не могу найти ни одного хорошего примера.я был бы признателен ЛЮБОЙ информация.
Решение
В моей конкретной реализации сотрудникAccessService вызывается репозиторием.На самом деле это фасад в слой борьбы с коррупцией.Он делегирует данные WorkerAccessAdapter.Адаптер извлекает объект из устаревшей модели (который он получает от EmployeeAccessFacade), затем передает его в WorkerAccessTranslator для преобразования объекта из устаревшей модели в объект домена в модели моего приложения.
Служба доступа к сотрудникам
public Employee findEmployee(String empID){
return adapter.findEmployee(empID);
}
Адаптер доступа к сотрудникам
public Employee findEmployee(String empID){
EmployeeAccessContainer container = facade.findEmployeeAccess(empID);
return translator.translate(container);
}
Доступ к сотрудникамПереводчик
public Employee translate(EmployeeAccessContainer container){
Employee emp = null;
if (container != null) {
employee = new Employee();
employee.setEmpID(idPrefix + container.getEmployeeDTO().getEmpID());
...(more complex mappings)
Другие советы
От тот Книга DDD (Domain-Driven Design:Решение проблем в самом сердце программного обеспечения) Эрик Эванс:
Общественный интерфейс антикоррупционного уровня обычно появляется как набор услуг, хотя иногда он может принимать форму сущности.
и немного позже
Одним из способов организации дизайна антикоррупционного слоя является комбинация фасадов, адаптеров (оба из Gamma et al.1995) и переводчики, наряду с механизмами связи и транспорта, обычно необходимы для общения между системами.
Итак, вы можете найти примеры, просмотрев предлагаемые шаблон адаптера и Фасадный узор.
Я попытаюсь перефразировать то, что сказал Эрик Эванс: ваш уровень борьбы с коррупцией будет выглядеть как услуги за пределами вашего уровня.Таким образом, за пределами антикоррупционного уровня другие уровни не будут знать, что они «разговаривают» с антикоррупционным слоем.Внутри слоя вы можете использовать адаптеры и фасады для упаковки устаревших источников информации.
Дополнительная информация об антикоррупционном уровне: