Лучший подход (шаблон?) Для создания объектов просмотра из разных ресурсов - PullRequest
4 голосов
/ 24 ноября 2011

В настоящее время я создаю объект представления из результата поиска (который поступает из другого отдельного ресурса) следующим образом:

ViewObject vo = searchResultToViewObjectMapper.map(searchResult);

Это отлично работает.

Однако теперь я хочу добавить несколько картинок. Эти изображения являются URL-адресами, и я могу определить их местоположение только через какой-либо другой ресурс, а не из результатов поиска.

Моей первой мыслью было бы использовать Шаблон Строителя, это стало бы:

ViewObject vo = viewObjectBuilder.build(searchResult);

и viewObjectBuilder будет делать что-то вроде этого:

private SomeOtherResourceRepository someOtherResourceRepo;

private SomeUrlBuilder someUrlBuilder;

private SearchResultToViewObjectMapper searchResultToViewObjectMapper;

public ViewObject build(SearchResult) {
    ViewObject vo = searchResultToViewObjectMapper.map(searchResult);

    String reference = someOtherResourceRepo.getOtherResource(searchResult);

    String urlToOtherResource = someUrlBuilder.build(reference);
    vo.setUrlToOtherResource(reference);

    return vo;
}

Вопрос: это хороший способ для этого? Или есть другие (лучшие) способы? Мне также любопытно, как подход DDD сделал бы это.

Заранее спасибо!

1 Ответ

1 голос
/ 06 декабря 2011

Использование фабрики будет работать для вас, если у вас есть все ресурсы, доступные перед созданием объекта - просто передайте их фабричному методу, и он сделает волшебство.

Если объект, который вы создаете (представление), создается поэтапно - т.е. сначала у вас есть только searchResult, после этого вы копаете больше и получаете несколько дополнительных URL-адресов, которые добавляются в представление, а затем вы делаете некоторые больше поиска для получения дополнительной информации, и только тогда вы захотите получить объект просмотра, лучшим решением будет строитель.

...