日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

JS 设计模式之初识(一)-单例模式

發布時間:2025/6/17 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JS 设计模式之初识(一)-单例模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、定義

設計模式的定義是:在面向對象軟件設計過程中針對特定問題的簡潔而優雅的解決 方案,通俗一點說,設計模式是在某種場合下對某個問題的一種解決方案。如果再通俗一點說,設計模式就是給面向對象軟件開發中的一些好的設計取個名字。也就是說設計模式并不難,而只是一些目前公認的解決某些問題的最佳實現而已。

1. 單例模式

單例模式的定義是:保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。例如:線程池,全局緩存,瀏覽器window對象等,這些都只需要一個對象實例就足夠了。

1.1 實現單例模式

要實現單例模式也并不復雜,只要用一個變量來標識是否已經給某個類創建過實例,如果是,則在下一次獲取該類的實例的時候,直接返回已經緩存好的實例, 否則創建并緩存這個實例。

1.單例模式實現一

// 單例模式實現一function SingleTon(name) {this.name = name;this.instance = null;}SingleTon.prototype.getName = function() {return this.name;}SingleTon.getInstance = function(name) {if (this.instance) {return this.instance;}return new SingleTon(name);} 復制代碼
  • 單例模式實現二, 利用閉包
  • // 單例模式實現二, 利用閉包function SingleTon2(name) {this.name = name;}SingleTon2.getInstance = (function(){let instance = null;return function(name) {if (!instance) {instance = new SingleTon2(name);}return instance;}})(); 復制代碼
  • 實現三, 利用類
  • // 實現三 類class SingleTon3 {constructor(props) {const { name, ...other } = props;this.name = name;this.instance = null; // 標識是否已經創建過實例}setName = () => {return this.name;}static getInstance = (name) => {this.instance = this.instance ? this.instance : new SingleTon3(name); return this.instance;}}const t1 = SingleTon3.getInstance('timo1');const t2 = SingleTon3.getInstance('timo2');console.log('t1 => ',t1); // timo1console.log('t2 => ',t2); // timo1console.log('t1 === t2 => ',t1 === t2); // true 復制代碼

    注意: 類(class)通過static關鍵字定義靜態方法。不能在類的實例上調用靜態方法,而應該通過類本身調用。這些通常是實用程序方法,例如創建或克隆對象的功能

    4.衍生, 使用閉包來封裝私有變量

    // 使用閉包來封裝私有變量const user = (function() {let name = 'timo';let age = 22;return {getUserInfo: function() {return name + ' '+ age;}};})(); 復制代碼

    特別注意:let 和 const 聲明并不會綁定到全局的window對象上!!!而使用var聲明會自動綁定到window

    總結:

    單例模式是一種簡單但非常實用的模式,特別是惰性單例技術,在合適的時候才創建對象,并且只創建唯一的一個。

    轉載于:https://juejin.im/post/5cfa1f2be51d45773d4685da

    《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

    總結

    以上是生活随笔為你收集整理的JS 设计模式之初识(一)-单例模式的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。