zoukankan      html  css  js  c++  java
  • 延迟加载

    延迟加载,亦称延迟实例化,延迟初始化等,主要表达的思想是,把对象的创建将会延迟到使用时创建,而不是在对象实例化时创建对象,即用时才加载。这种方式有助于提高于应用程序的性能,避免浪费计算,节省内存的使用等。针对于这种做法,似乎称之为即用即创建更为合适些。

    例如:一个文章实体类Article,一个文章分类实体类Category,通过Article获取相对应的Category

    方法1:在获取Article实体类时,将相对应的Category实体类塞给Article

    方法2:要调用Category时,通过Article从数据库中获取

    方法3:在Category属性的get访问器中实现读取数据库获取文章分类的代码,这样如果没有使用到Category属性的 时候是不会调用到这些代码的,也就不会去访问数据库拿东西了

     class Program
        {
            static void Main(string[] args)
            {
                ///这行代码表明:要创建一个延迟加载的字符串对象s      
                //////原型为Lazy<T> 对象名=new Lazy<T>(Fun<T>)      
                ///采用泛型委托进行构造,实例化此委托时要求必须是返回值T类型的方法    
                //////如在本例中,T为string,则TestLazy.GetString方法的返回值必须也是string类型   
                Lazy<string> s = new Lazy<string>(TestLazy.GetString);
                Console.WriteLine(s.IsValueCreated);//返回False        
                Console.WriteLine(s.Value); //返回S的当前值       
                Console.WriteLine(s.IsValueCreated);//返回True     
            }
        }
       public class TestLazy
       {
           public static string GetString()
           {
               return DateTime.Now.ToLongTimeString();
           }
       }

    http://kb.cnblogs.com/page/90674/

    http://kb.cnblogs.com/page/90677/

    http://kb.cnblogs.com/page/99182/

    http://blog.zhaojie.me/2009/09/standard-lazy-proxy.html

  • 相关阅读:
    [leetCode]剑指 Offer 43. 1~n整数中1出现的次数
    [leetCode]剑指 Offer 42. 连续子数组的最大和
    HDU
    HDU
    HDU
    HDU
    HDU
    HDU
    POJ
    POJ
  • 原文地址:https://www.cnblogs.com/hongdada/p/3115638.html
Copyright © 2011-2022 走看看