【渐进】延迟加载机制的简易实现(上)
2010-09-30 21:05:39 来源:WEB开发网我们在软件设计中常遇到这样一种场景,一个对象的某个成员,它的加载很耗时,然而又不是总是需要,因为我们不希望它在对象初始化的时候就被加载,而是在它被显示使用时才去加载。
我们总是建议暴露属性而不是成员,作用之一便是本文的主题"延迟加载", 属性的get,set使得我们能够主动的控制成员的加载。
public class Test
{
private string _property;
public string Property
{
get { return this._property; }
set { this._property = value; }
}
}
以上就是最基本的属性写法,.net3.0之后,给了如下的语法糖:
public string Property { get; set; }
然而很多时候,情况远远要复杂的多,于是有了如下的实现:
private object _property;
public object Property
{
get
{
if (this._property == null)
this._property = new object();
return this._property;
}
}
当一个对象足够变得复杂后,上述代码更加使得代码臃肿而充斥大量重复的判断。作为程序员的我们总是有那么一股意识,把重复的抽取出来。于是我们隐约有了一个想法,是不是可以设计一个自动的延迟加载机制来代替这种写法?判断是重复的,实际的加载方法也是早已存在的,那么这个机制要做的就是自动的为对象加载某个成员的数据,而无需去重复的编码判断是不是已经加载或是未被加载。
- ››延迟着色〔1〕
- ››延迟着色(2)
- ››加载XX.dll时出错的一般解决方法
更多精彩
赞助商链接