首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

漫談 Visual C# 元件設計方法(一):屬性 Lazy-Allocate (延遲配置) 模式

     編輯:關於C語言

常見預先配置模式


public class Class1
{
    private MyData _data = new MyData(); // 建構子即建立
    public MyData Data => _data;
}

問題:若 MyData 佔用大量記憶體且使用率低,**每個 Class1 實例皆強制付出成本**。

Lazy-Allocate 延遲配置模式


public class Class1
{
    private MyData _data; // 初始為 null

    public MyData Data
    {
        get
        {
            if (_data == null) _data = new MyData(); // 首次存取才建立
            return _data;
        }
    }
}

兩種策略對比

策略優點缺點適用場景
Pre-Allocate (預先配置)存取零判斷、速度最快必付記憶體成本高頻必用屬性 (如集合容器內部陣列)
Lazy-Allocate (延遲配置)按需付費、節省記憶體首次存取多一次 null 檢查低頻/可選屬性 (如 ASP.NET Style、大型子物件)

.NET Framework 實踐

BCL 大量採用 Lazy-Allocate:Control.Controls、Control.ContextMenu、WebControl.Style 等皆為首次存取才實例化。此模式體現「以時間換空間」的經典工程權衡。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved