91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript單例模式是什么及怎么實現

發布時間:2022-10-21 17:06:08 來源:億速云 閱讀:142 作者:iii 欄目:編程語言

今天小編給大家分享一下JavaScript單例模式是什么及怎么實現的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

1、什么是設計模式

在軟件設計過程中,針對特定問題的簡潔而優雅的解決方案。

把之前的經驗總結并且合理運用到某處場景上,能夠解決實際的問題。

2、設計模式五大設計原則(SOLID)

S-單一職責原則

即一個程序只做好一件事

O-開放封閉原則

可擴展開放,對修改封閉

L-里氏置換原則

子類能覆蓋父類,并能出現在父類出現的地方

I-接口獨立原則

保持接口的單一獨立

D-依賴導致原則

使用方法只關注接口而不關注具體類的實現

3、為什么需要設計模式?

易讀性

使用設計模式能夠提升我們的代碼可讀性,提升后續開發效率

可拓展性

使用設計模式對代碼解耦,能很好的增強代碼的yi修改性和拓展性

復用性

使用設計模式可以復用已有的解決方案,無需重復相同工作

可靠性

使用設計模式能夠增加系統的健壯性,使代碼編寫真正工程化

4、單例模式

定義:唯一&全局訪問。保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。

另外一種多例模式,通過一個類構造出多個不一樣的實例,這就是多例模式。

單例模式與多例模式最本質的區別:實例的數量。

單例模式永遠只有一個實例,這個實例可以被緩存起來,可以復用。

應用場景:就是能被緩存的內容,例如登錄彈窗。

我覺得就是一個地方如果在你的項目中可以用到兩次或兩次以上,都可以嘗試一下這個,能夠減少很多代碼。

來看這段偽代碼:

const creatLoginLayer = () => {
    const div = document.createElement("div");
    div.innerHtml = "登錄浮窗";
    div.style.display = "none";
    document.body.appendChild(div);
    return div;
};

document.getElementById("loginBtn").onclick = () => {
    const loginLayer = creatLoginLayer();
    loginLayer.style.display = "block";
};

creatLoginLayer的作用是創建一個登錄浮窗并將節點添加到body上,下面做的是登錄按鈕的一個點擊事件,點擊登錄按鈕就會創建登錄浮窗并將displaynone改為block,將他顯示出來。

這個邏輯是沒毛病的,但是我們想一下,每點擊一下登錄按鈕就要執行這些代碼,一個項目中如果有很多地方要呢?我們上面這短短幾行而已,如果是上百上千甚至上萬呢?是不是就非常損耗性能,這個時候,我們的單例模式就派上了用場。

使用單例模式后:

const getSingle = (fn) => {
    let result;
    return (...rest) =>{
        return result || (result = fn.apply(this.rest));
    };
};

const creatLoginLayer = () => {
    const div = document.createElement("div");
    div.innerHtml = "登錄浮窗";
    div.style.display = "none";
    document.body.appendChild(div);
    return div;
};

const createSingleLoginLayer = getSingle(createLoginLayer);

document.getElementById("loginBtn").onclick = () => {
    const loginLayer = createSingleLoginLayer();
    loginLayer.style.display = "block";
};

可以見到,增加了一個getSingle函數,這里有個閉包的概念,result變量只要一直在引用就不會被銷毀,起到了一個緩存的作用,函數的參數是一個function,如果resultnull或者undefined就執行后面的邏輯,將這個傳進來的函數的返回值也就是這個div賦給result,這樣我們下面的函數就執行一次就可以了,下次調用的時候result有值,所以就直接返回了,不會在執行后面的邏輯。

以上就是“JavaScript單例模式是什么及怎么實現”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安溪县| 温宿县| 从化市| 仙桃市| 平湖市| 介休市| 宁陕县| 咸丰县| 芜湖县| 宾川县| 三门峡市| 原平市| 无极县| 九寨沟县| 上犹县| 连山| 苍山县| 南木林县| 鸡泽县| 齐齐哈尔市| 故城县| 金湖县| 开化县| 云梦县| 金门县| 五大连池市| 洞头县| 平陆县| 斗六市| 乳源| 临高县| 云阳县| 施秉县| 华容县| 象山县| 鄂托克旗| 乌拉特中旗| 芷江| 伊春市| 垫江县| 乐都县|