从不同资源创建视图对象的最佳方法(模式?)

时间:2011-11-24 15:46:53

标签: java design-patterns builder

目前我正在从搜索结果(来自不同的单一资源)构建一个视图对象,如下所示:

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方法会如何做到这一点。

提前致谢!

1 个答案:

答案 0 :(得分:1)

如果在创建对象之前拥有所有可用资源,使用工厂将为您工作 - 只需将它们传递给工厂方法,它就会发挥作用。

如果你正在创建的对象(视图)是按步骤创建的 - 即首先你只有searchResult,之后你会挖掘更多并获得一些额外的URL,这些URL被添加到视图中,然后你进一步搜索更多信息,只有这样你才能获得视图对象,构建器才是更好的解决方案。