天天看點

JS代理實作單例模式

單例模式--保證一個類僅有一個單例
JS代理實作單例模式

這種方式相對簡單, 缺點是使用者必須知道這個類有擷取單例方法

讓使用者像平常一樣, new出來的對象永遠都是相同的一個

其實 <code>new</code> 出來的對象就是該方法傳回的對象, 以往傳回預設的是 <code>this</code>, 現在顯式傳回方法靜态屬性, 進而實作單例效果.

該方法讓單例化透明, 同時也讓這個類無法擴充, 隻能是單例, 若日後有更改需求, 十分麻煩, 這時候可以采用代理模式

JS代理實作單例模式

優點

将定義類與使用類解耦, 對原有類沒有産生任何影響

實作了懶加載, 隻有當第一次使用單例代理時才會建立單例對象

使用 <code>get</code> <code>set</code> 方法控制對象屬性的通路設定

單例模式可以使用類也可以直接使用對象, 具體視情況而定

希望讀者在看完後能提出意見, 點個贊, 鼓勵一下, 我們一起進步. 加油 !!