目前我正在从搜索结果(来自不同的单一资源)构建一个视图对象,如下所示:
ViewObject vo = searchResultToViewObjectMapper.map(searchResult);
这很好用。
但是,现在我想添加一些图片。这些图片是网址,我只能通过搜索结果来源之外的其他资源来确定其位置。
我的第一个想法是使用Builder Pattern,它会变成:
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方法会如何做到这一点。
提前致谢!
答案 0 :(得分:1)
如果在创建对象之前拥有所有可用资源,使用工厂将为您工作 - 只需将它们传递给工厂方法,它就会发挥作用。
如果你正在创建的对象(视图)是按步骤创建的 - 即首先你只有searchResult
,之后你会挖掘更多并获得一些额外的URL,这些URL被添加到视图中,然后你进一步搜索更多信息,只有这样你才能获得视图对象,构建器才是更好的解决方案。