DDD: application layer

stalxed

Новичок
Сейчас просматриваю книгу IDDD(жду не дождусь, когда приедет книжное издание).
Интереснее всего глава Application.

Суть в том, что из Application Layer в Presentation Layer автор(Vaughn Vernon) предлагает передавать модели Domain Layera следующими способами:
1) DTO Data Transfer Object
2) DPO http://vaughnvernon.co/?page_id=40
3) Mediator для "раскрытия" внутреннего состояния агрегата.
4) Интересная идея трансформеров для application сервисов:
Код:
public interface TenantIdentityService {
    ...
    public TenantData provisionTenant(
            String aTenantName,
            String aTenantDescription,
            boolean isActive,
            FullName anAdministratorName,
            EmailAddress anEmailAddress,
            PostalAddress aPostalAddress,
            Telephone aPrimaryTelephone,
            Telephone aSecondaryTelephone,
            String aTimeZone,
            TenantDataTransformer aDataTransformer);
Т.е. подсовываем один из:
  • CalendarWeekCSVDataTransformer
  • CalendarWeekDPODataTransformer
  • CalendarWeekDTODataTransformer
  • CalendarWeekJSONDataTransformer
И получаем от сервиса данные в нужном формате.
5) И Presentation Model являющаяся банальным адаптером.

Все эти идеи понятны и банальны.

Но не могу понять, что же такого ужасного вызвать сервис, получить от него модель и эту же модель передать в шаблонизатор?

Конечно, есть риск, что в шаблоне произойдёт вызов не get метода(наподобие banUser, convertToAdmin, etc), но опасность не сильно ли преувеличена?
Да, медиатор для раскрытия "потрохов" агрегата - понятно.
Но DTO, DPO, Presentation Model - это разве не попросту потеря времени и увеличение количества работы при изменение модели?
 

fixxxer

К.О.
Партнер клуба
Но не могу понять, что же такого ужасного вызвать сервис, получить от него модель и эту же модель передать в шаблонизатор?
Не всегда модель подходит для presentation как есть.
А в простых случаях я так и делаю, только ты никому не говори :)
 
Сверху