惰性載入

類似 卷軸瀑布的概念

惰性載入英语:Lazy loading、Infinite Scroll,又稱延遲載入[1]懶載入[2][3]無限捲動[4]瀑布流[4]),是一種設計模式,被運用在軟體設計網頁設計當中[5],对于网页界面,其特徵為使用者透過滑鼠,捲動英语Scrolling瀏覽頁面,直到頁面下方時,就會自動載入更多內容;有多數網站採用這項網頁設計,例如Google圖片搜索Google+FacebookTwitterPinterest[6]和維基百科的Flow討論系統。也有結合無限捲動和多,兩著特性的網頁設計[7]

而对于数据结构而言,惰性載入是指从一个数据对象通过方法获得里面的一个属性对象时,这个对应对象实际并没有随其父数据对象创建时一起保存在运行空间中,而是在其读取方法第一次被调用时才从其他数据源中加载到运行空间中,这样可以避免过早地导入过大的数据对象但并没有使用的空间占用浪费。

實現

實現惰性載入的設計模式,有多種方式:

惰性初始模式

private int myWidgetID;
private Widget myWidget = null;
 
public Widget MyWidget 
{
    get 
    {
        if (myWidget == null) 
        {
            myWidget = Widget.Load(myWidgetID);
        }
        return myWidget;
        /* 也可使用 C# 的 null 联合运算子 ?? (x ?? y 相当于 x != null ? x : y):
         * return myWidget = myWidget ?? Widget.Load(myWidgetID);
         */
    }
}

Virtual proxy

Ghost

Value holder

jQuery的插件

JavaScript函式庫──jQuery的一些插件,有提供無限捲動的功能,例如Infinite Scroll插件[8]

參見

參考來源