65.9K
CodeProject 正在变化。 阅读更多。
Home

懒加载

starIconstarIconstarIconstarIconstarIcon

5.00/5 (1投票)

2013 年 10 月 11 日

CPOL
viewsIcon

7127

延迟加载是一种对象关系模式,用于推迟对象的初始化,直到需要它时才进行。该对象不会包含所有

延迟加载是一种对象关系模式,用于推迟对象的初始化,直到需要它时才进行。该对象不会包含所有数据,但它知道在需要时如何获取所有数据。

要延迟加载的对象最初设置为 null,每次请求该对象都会检查是否为 null,并在首次返回之前“动态”创建它。

实现延迟加载主要有四种方法:延迟初始化、虚拟代理、值持有者和幽灵。

这是一个如何在您的类中应用延迟初始化的示例。

public class Order
{
private int _OrderId = 0;
private int OrderId
{
set { _OrderId = value; }
get { return _OrderId; }
}

private Customer _Customer = null;
public Customer Customer
{
get
{
if (_Customer == null)
_Customer = Customer.GetCustomerByOrderId(_OrderId); // Lazy loading the Customer
return _Customer;
}
set { _Customer = value; }
}
}

  这样,首次访问 Customer 属性将导致加载 customer 对象。

注意:并非总是使用延迟加载的好习惯,尤其是在加载对象需要大量时间和资源的情况下,例如访问 Web 服务。在这种情况下,最好将所有必需的数据深度加载到对象中。

 

© . All rights reserved.