Вопрос

На данный момент нам нужно создать приложение, основанное на устаревшем приложении.Код этого старого приложения следует выбросить и переписать, но, как обычно, вместо того, чтобы переписывать его, нам нужно основывать на нем что-то новое.Недавно мы решили пойти по пути 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) и переводчики, наряду с механизмами связи и транспорта, обычно необходимы для общения между системами.

Итак, вы можете найти примеры, просмотрев предлагаемые шаблон адаптера и Фасадный узор.

Я попытаюсь перефразировать то, что сказал Эрик Эванс: ваш уровень борьбы с коррупцией будет выглядеть как услуги за пределами вашего уровня.Таким образом, за пределами антикоррупционного уровня другие уровни не будут знать, что они «разговаривают» с антикоррупционным слоем.Внутри слоя вы можете использовать адаптеры и фасады для упаковки устаревших источников информации.

Дополнительная информация об антикоррупционном уровне:

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top