單例模式是針對類的一種設計,讓類只能有乙個例項物件,對於一些沒必要產生第二個例項的類來說建議設計成單例類。
單例類的例項化過程是由自身實現的,減少了其他人使用該類時的心智負擔。缺點是單例類由於靜態屬性,無法擴充套件。
由於單例類的例項化過程是由自身實現的,所以設計的時候在new這裡就會產生兩種方法。
1. 預載入單例
/**
*singleton_quick
* * @export
* @class singleton_quick
*/export class singleton_quick
public static instance: singleton_quick = new singleton_quick()
private _name: string
set name(value: string)
get name(): string
}
程式剛開始執行,類就例項化完畢。減輕後續大量類例項化時產生的壓力,提高執行流暢度。缺點是如果模擬較龐大時,會使程式啟動暫時阻塞,而且容易造成資源浪費,因為有些類可能並沒有被呼叫。
2. 懶載入單例
/**
*singleton_lazy
* * @export
* @class singleton_lazy
*/export class singleton_lazy
private static instance: singleton_lazy = null
public static getinstance(): singleton_lazy
private _name: string
set name(value: string)
get name(): string
}
類內部實現了乙個getinstance方法,程式剛開始執行,類並不例項化,直到外部呼叫getinstance方法時才會執行建構函式,即用的時候再例項化物件。這樣做可以避免程式啟動剛開始時阻塞,類的所有資源採取懶載入策略。缺點是在多執行緒情況下會誤判instance為null,然而js為單執行緒,不會涉及這方面的問題。
單例類的關鍵:
建構函式的訪問許可權為private。
靜態例項。
懶載入和預載入
懶載入和預載入 懶載入的原理及實現 處理預載入時設定img 的src 屬性和img 的onload 事件的位置前後順序關係 關於的預載入,你所不知道的 載入的過程是非同步的 一 懶載入 介紹 目的 二 預載入 介紹 目的 這對畫廊及佔據很大比例的 來說十分有利,它保證了快速 無縫地發布,也可幫助使用...
預載入和懶載入
懶載入 通過監聽scroll事件,判斷進入可視區域之後請求資源 對於電商等很多,頁面很長的業務場景適用 減少無效資源的載入 併發載入的資源過多會阻塞js的載入,影響 的正常使用 可以使用原生js或者引用zepto.min.js var viewheight document.documentelem...
懶載入和預載入
懶載入和預載入 懶載入的原理及實現 處理預載入時設定img 的src 屬性和img 的onload 事件的位置前後順序關係 關於的預載入,你所不知道的 載入的過程是非同步的 一 懶載入 介紹 目的 二 預載入 介紹 目的 這對畫廊及佔據很大比例的 來說十分有利,它保證了快速 無縫地發布,也可幫助使用...