java - 从不同资源创建 View 对象的最佳方法(模式?)

标签 java design-patterns builder

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

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

提前致谢!

最佳答案

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

如果您正在创建的对象( View )是分步创建的 - 即首先您只有 searchResult,之后您会挖掘更多并获得一些额外的 URL,这些 URL 将被添加到 View 中,然后你再做一些搜索以获取更多信息,然后你才想获得 View 对象,构建器将是更好的解决方案。

关于java - 从不同资源创建 View 对象的最佳方法(模式?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8259564/

相关文章:

java - 工厂模式构造对象

ios - swift中的Builder模式设置方法

java - builder模式和大量强制参数

java - HTTP 1.1 持久连接 : Android GET/POST: [FIN/ACK] coming

java - Android - 两位小数

java - 字符串到单词的 String[]

java - 具有操作传递的装饰器模式?

design-patterns - 是否建议从该抽象类中的方法调用抽象方法

java - 构建器模式何时比继承和多重实现更可取?

java - 使用 java 将 .pdf doc 或 .png 图像内容插入到 .docx 文件中