Vai*_*hav 3 design-patterns class
我将通过例子问这个问题.假设我正在设计StackOverflow并且我拥有用户所做的所有这些帖子.对于每个帖子,我都会跟踪大量内容(标题,标签,作者,时间戳,评论,历史记录等).
所以我设计了一个名为Post的类来处理这个问题.
当我点击StackOverflow的主页时 - 我必须列出一些帖子.现在我有一个帖子结构的集合(也许是List).
问题在于,每当我必须得到一个List时,我不需要Post中本身存在的很多细节.例如,在列表页面上我不需要历史记录.
所以,问题是,实现这样的事情的最佳模式是什么.目前我们所做的是我们有一个较轻的Post类(比如PostLight),这是在这种场景中使用的 - 但这看起来很俗气.
我建议使用LazyLoading哪个做你想要的,并且通常用于数据库查询.
假设您有一个Post只从一些常用的字段中加载的数据库.只有在请求时才会加载其他所有详细信息.
可以使用这样的东西:
public class Post
{
private String title;
private String text;
private List<Post> history;
public String getTitle() {
return title;
}
public String getText() {
return text;
}
public List<Post> getHistory() {
if (null == history) {
history = loadHistory();
}
return history;
}
}
Run Code Online (Sandbox Code Playgroud)
因此,在首页上列出几个没有详细信息的帖子,将不会加载历史记录.
您可以DataLoader在实例化Post对象时注入自定义,然后在延迟加载其他数据时调用该加载器.
作为替代方案,您也可以使用ProxyPattern它来为您提供类似的行为.