zoukankan      html  css  js  c++  java
  • 延迟初始化 (Lazy Initialization)

    延迟初始化 (Lazy Initialization),在解决大对象的创建开销时,很有用。我(寻自己)以前碰到 延迟初始化 (Lazy Initialization) 的时候,一直都是理解的不是太透彻,今天决定彻底的认识下 延迟初始化 (Lazy Initialization)。

    1.定义

    一个对象的延迟初始化 (Lazy Initialization)意味着该对象的创建将会延迟至第一次使用该对象时。延迟初始化 (Lazy Initialization)主要用于提高性能,避免浪费计算,并减少程序内存要求。(延迟初始化=延迟实例化)


    2.理解

    在 .Net 4.0 中,可以通过 Laze<Object> 来快速的构建,但是,很不幸,没有装 .Net Framework 4.0,况且,这样的方法,不利于我们理解其中的原理,下面一段经典的代码,最能说明延迟初始化 (Lazy Initialization):

    public sealed class Singleton
    {
      Singleton()  { }
    
      public static Singleton Instance
      {
        get
        {
          return Nested.instance;
        }
      }
    
      class Nested
      {
        static Nested() { }
    
        internal static readonly Singleton instance = new Singleton();
      }
    }
    
    

    3.应用场景

    以下是最常见的方案:有一个对象的创建开销很大,而程序可能不会使用它。例如,假定您在内存中有一个Customer 对象,该对象的 Orders 属性包含一个很大的 Order 对象数组,该数组需要数据库连接以进行初始化。如果用户从未要求显示 Orders 或在计算中使用其数据,则没有理由使用系统内存或计算周期来创建它。通过使用 Lazy<Orders> 将 Orders 对象声明为延迟初始化 (Lazy Initialization),可以避免在不使用该对象的情况下浪费系统资源。有一个对象的创建开销很大,您想要将创建它的时间延迟到完成其他开销大的操作之后。例如,假定您的程序在启动时加载若干个对象实例,但只有一些对象实例需要立即执行。通过将不必要的对象的初始化延迟到已创建必要的对象之后,可以提高程序的启动性能。

    总结:延迟加载的优势和实现,相信大家都比较理解了,最重要的是,该实现,也拓宽了我们的视野和思路

    寻自己 - 2010/10/12 17:35 - .Net,C#,Asp.Net - 首发博客园

  • 相关阅读:
    十. 代码格式化插件 Tag
    小知识点
    IE11 打开方式 出现两个图标
    一 OS X 焦点 切换
    九. 边栏工具 浏览器工具 SideBarEnhancements
    Django进阶之缓存和信号
    Django进阶之中间件
    Python 堡垒机编程之Paramiko
    Django ORM补充
    Web 开发基础之Html
  • 原文地址:https://www.cnblogs.com/xunziji/p/1849027.html
Copyright © 2011-2022 走看看