代码之家  ›  专栏  ›  技术社区  ›  Hector Sosa Jr

同一类中的延迟加载和渴望加载行为

c#
  •  -1
  • Hector Sosa Jr  · 技术社区  · 17 年前

    我有一个从非数据库源加载大量子集合的框架。我最近得到了一个用例,其中资源在网络驱动器上,要加载集合需要花费很长时间。我仍然需要支持热切的加载场景,但现在我需要添加懒惰的加载。

    我有这个书签的解决方案,但现在我找不到那个链接。到目前为止,谷歌还没有返回任何可用的链接。第一个反应是向构造函数中添加一个布尔参数。我知道这是一种糟糕的“代码味道”,我记得答案是不同的。

    有人能告诉我如何解决这个问题吗?

    更多信息:

    集合是垂直的,而不是水平的。这就是为什么在后台加载在这种特定情况下不起作用。该数据存储在类似于文件夹的层次结构中。我看到一些结构达到了10级深。

    2 回复  |  直到 17 年前
        1
  •  1
  •   Hector Sosa Jr    17 年前

    结果解决方案比我想象的要简单。我只是在不同的层次上混合模式。我的意思是,我在最顶层的水平集合中使用了热切加载,并将下面的任何内容转换为延迟加载。

    它真的很管用。现在,使用这个框架的用户界面响应非常快。

        2
  •  0
  •   Juliet    17 年前

    是的,构造函数中的布尔值绝对是一种糟糕的代码味道。但是,我也会说,将类更改为支持延迟加载也是一种代码味道,因为它违反了一些封装的基本原则(即,您的类是否应该知道或关心资源是否位于网络驱动器上?).

    你不应该改变你的班级。相反,更改使用类的代码,以便它在后台线程中检索数据。