我有一个框架,可以从非数据库源加载大量子集合。我最近得到了一个用例,资源在网络驱动器上,并且需要永远收集加载的集合。我仍然需要支持急切的加载方案,但我现在需要添加延迟加载。
我有这个书签的解决方案,但现在我找不到那个链接。到目前为止,Google还没有返回任何可用的链接。第一个反应是只向构造函数添加一个布尔参数。我知道这是一个糟糕的“代码味道”,我记得答案是不同的。
有人能指出我如何解决这个问题的资源吗?
更多信息:
收藏品是垂直的,而不是水平的。这就是为什么在后台加载在这种特定情况下不起作用的原因。该数据存储在类似于文件夹的分层结构中。我已经看到一些结构可以达到10级。
答案 0 :(得分:1)
解决方案比我想象的更简单。我只是混合了不同级别的模式。我的意思是我在最顶层的水平集合中使用了预先加载,并将其下的任何其他内容转换为延迟加载。
效果很好。现在,使用此框架的用户界面非常敏感。
答案 1 :(得分:0)
是的,构造函数中的布尔值肯定会是一个糟糕的代码味道。但是,我还要说改变你的类来支持延迟加载也是代码味道,因为它违反了封装的一些基本原则(即你的班级应该知道或关心资源是否位于网络驱动器上?)。
你不应该改变你的课程。相反,请更改使用您的类的代码,以便它在后台线程中检索数据。