摘要:單例模式是一個用來劃分命名空間并將一批屬性和方法組織在一起的對象,如果它可以被實例化,那么它只能被實例化一次。
單例模式是一個用來劃分命名空間并將一批屬性和方法組織在一起的對象,如果它可以被實例化,那么它只能被實例化一次。
原文鏈接
單例模式優點
劃分命名空間,減少全局變量
組織代碼為一體,便于閱讀維護
并非所有的對象字面量都是單例,比如模擬數據
基本結構: let Cat = { name: "Kitty", age: 3, run: ()=>{ console.log("run"); } }
上面對象字面量結構是創建單例模式的方法之一,但并不是單例模式,單例模式的特點是僅被實例化一次
要實現單例模式可以使用變量來標示該類是否被實例
基本實現: class Singleton { constructor(name){ this.name = name; this.instance = null; } getName(){ return this.name; } } let getInstance = (()=> { let instance; return (name)=> { if(!instance) { instance = new Singleton(name); } return instance; } })() let cat1 = getInstance("Hello"); let cat2 = getInstance("Kitty"); console.log(cat1 === cat2); //true console.log(cat1.getName()) //"Hello" console.log(cat2.getName()) //"Hello"
用instance變量標示實例Singleton,如果沒有實例創建一個,如果有則直接返回實例,由于僅能被實例化一次,cat2得到的實例和cat1相同
實用
在創建dom元素時為避免重復創建,可以使用單例模式創建
//單例模式 let createModal = function() { let content = document.createElement("div"); content.innerHTML = "彈窗內容"; content.style.display = "none"; document.body.appendChild(content); } //代理獲取實例 let getInstance = function(fn) { let result return function() { return result || (result = fn.apply(this,arguments)); } } let createSingleModal = getInstance(createModal); document.getElementById("id").onclick = function(){ let modal = createSingleModal(); modal.style.display = "block"; };
單例模式是一種簡單卻非常使用的設計模式,在需要時創建實例,并且只創建唯一一個
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/88891.html
摘要:文章系列設計模式單例模式設計模式策略模式設計模式代理模式概念單例模式的定義是保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。在開發中,單例模式的用途同樣非常廣泛。 前言 本系列文章主要根據《JavaScript設計模式與開發實踐》整理而來,其中會加入了一些自己的思考。希望對大家有所幫助。 文章系列 js設計模式--單例模式 js設計模式--策略模式 js設計模式--代理模式 概念...
摘要:什么是設計模式設計模式是一種能夠被反復使用,符合面向對象特性的代碼設計經驗的總結,合理的使用設計模式能夠讓你得代碼更容易維護和可靠設計模式的類型共分為創建型模式,結構型模式,行為型模式三種創建型模式創建型模式是對一個類的實例化過程進行了抽象 什么是設計模式 設計模式是一種能夠被反復使用,符合面向對象特性的代碼設計經驗的總結,合理的使用設計模式能夠讓你得代碼更容易維護和可靠設計模式的類型...
摘要:什么是單例模式單例模式是一種十分常用但卻相對而言比較簡單的單例模式。對象就是單例模式的體現。總結單例模式雖然簡單,但是在項目中的應用場景卻是相當多的,單例模式的核心是確保只有一個實例,并提供全局訪問。 1. 什么是單例模式? 單例模式是一種十分常用但卻相對而言比較簡單的單例模式。它是指在一個類只能有一個實例,即使多次實例化該類,也只返回第一次實例化后的實例對象。單例模式不僅能減少不必要...
閱讀 2628·2021-11-23 09:51
閱讀 2418·2021-09-30 09:48
閱讀 2044·2021-09-22 15:24
閱讀 1009·2021-09-06 15:02
閱讀 3303·2021-08-17 10:14
閱讀 1934·2021-07-30 18:50
閱讀 1980·2019-08-30 15:53
閱讀 3168·2019-08-29 18:43