2013-08-28 2 views
1

Я использую текущую топологию слоя:Spring: DTO и обслуживание слой

1) дао 2) обслуживание 3) Контроллеры (презентация)

В одном из моих контроллеров Я получаю следующий звонок (от клиентов):

public PlayerStatisticsDTO getPlayerStatistics(int playerId); 

Контроллер должен теперь делегировать вызов сервисному слою.

Проблема, если я создать метод, как:

public PlayerStatisticsDTO getPlayerStatistics(int playerId); 

в моей службы я на самом деле делает мой уровень сервиса осведомленный объекта DTO!

Я считаю, что это плохая практика

Так мой другой вариант, который я придумал создает новый класс (или нет?):

public class PlayerStatistics {...} 

и затем вызвать в мой контроллер:

PlayerStatistics stats = this.service.getPlayerStatistics(playerID); 
return toDTO(stats); 

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

+0

В чем проблема, я не понял? –

+0

Я не хочу, чтобы мой служебный уровень был знаком с моими классами DTO – Urbanleg

+0

, вы хотите, чтобы прямой доступ к dto к вашему контроллеру был не таким? каким образом вы хотите модулировать? –

ответ

0

Если между запрошенными данными и их представлением отображается один на один, использование объекта DTO в слое презентации не является плохой практикой. Если вы измените уровень презентации на более позднем этапе, вы можете создать новый POJO, содержащий атрибут представления, и нанести их на уровне сервиса.

Смежные вопросы