WEB开发网
开发学院软件开发C语言 【渐进】延迟加载机制的简易实现(上) 阅读

【渐进】延迟加载机制的简易实现(上)

 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 3 4 5  下一页

Tags:渐进 延迟 加载

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接