摘要:指向的是唯一實例化的對象返回結果是。實現(xiàn)方式創(chuàng)建類。構造一個廣為人知的接口,供用戶對該類進行實例化單例模式應用實例我們用一個生活中常見的一個場景來說明單例模式的應用。這就是單例模式的典型應用。
單例模式的定義是:保證一個類僅有一個一個實例,并提供一個訪問它的全局訪問點。
單例模式能在合適的時候創(chuàng)建對象,并且創(chuàng)建唯一的一個。
代碼接近于生活,很有意思。比如一個網(wǎng)站的登錄,點擊登錄后彈出一個登錄彈框,即使再次點擊,也不會再出現(xiàn)一個相同的彈框。又或者一個音樂播放程序,如果用戶打開了一個音樂,又想打開一個音樂,那么之前的播放界面就會自動關閉,切換到當前的播放界面。這些都是單例模式的應用場景。
要實現(xiàn)一個單例模式,一個經典的方式是創(chuàng)建一個類,類中又一個方法能創(chuàng)建該類的實例對象,還有一個標記,記錄是否已經創(chuàng)了過了實例對象。如果對象已經存在,就返回第一次實例化對象的引用。
var Singleton = function(name) { this.name = name; //一個標記,用來判斷是否已將創(chuàng)建了該類的實例 this.instance = null; } // 提供了一個靜態(tài)方法,用戶可以直接在類上調用 Singleton.getInstance = function(name) { // 沒有實例化的時候創(chuàng)建一個該類的實例 if(!this.instance) { this.instance = new Singleton(name); } // 已經實例化了,返回第一次實例化對象的引用 return this.instance; }
用戶可以通過一個廣為人知的接口,對該實例進行訪問。
我們嘗試對該對象進行兩次實例化,觀察兩次實例化結果是否指向同一個對象。
var a = Singleton.getInstance("sven1"); var b = Singleton.getInstance("sven2"); // 指向的是唯一實例化的對象 console.log(a === b);
返回結果是:true。說明a、b之間是引用關系。
es6實現(xiàn)方式創(chuàng)建Singleton類。class關鍵字和靜態(tài)函數(shù)都是es6新增的。
class Singleton { constructor(name) { this.name = name; this.instance = null; } // 構造一個廣為人知的接口,供用戶對該類進行實例化 static getInstance(name) { if(!this.instance) { this.instance = new Singleton(name); } return this.instance; } }單例模式應用實例
我們用一個生活中常見的一個場景來說明單例模式的應用。
任意一個網(wǎng)站,點擊登錄按鈕,只會彈出有且僅有一個登錄框,即使后面再點擊登錄按鈕,也不會再彈出多一個彈框。這就是單例模式的典型應用。接下來我們實現(xiàn)它。為了注重單例模式的展示,我們把登錄框簡化吧
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/90305.html
摘要:什么是單例模式單例模式是一種十分常用但卻相對而言比較簡單的單例模式。對象就是單例模式的體現(xiàn)??偨Y單例模式雖然簡單,但是在項目中的應用場景卻是相當多的,單例模式的核心是確保只有一個實例,并提供全局訪問。 1. 什么是單例模式? 單例模式是一種十分常用但卻相對而言比較簡單的單例模式。它是指在一個類只能有一個實例,即使多次實例化該類,也只返回第一次實例化后的實例對象。單例模式不僅能減少不必要...
摘要:目錄導語理解對象和面向對象的程序設計創(chuàng)建對象的方式的繼承機制原型對象原型鏈與原型對象相關的方法小結導語前面的系列文章,基本把的核心知識點的基本語法標準庫等章節(jié)講解完本章開始進入核心知識點的高級部分面向對象的程序設計,這一部分的內容將會對對象 目錄 導語 1.理解對象和面向對象的程序設計 2.創(chuàng)建對象的方式 3.JavaScript的繼承機制 3.1 原型對象 3.2 原型鏈 3.3 與...
摘要:我們今天也來做一個萬能遙控器設計模式適配器模式將一個類的接口轉換成客戶希望的另外一個接口。今天要介紹的仍然是創(chuàng)建型設計模式的一種建造者模式。設計模式的理論知識固然重要,但 計算機程序的思維邏輯 (54) - 剖析 Collections - 設計模式 上節(jié)我們提到,類 Collections 中大概有兩類功能,第一類是對容器接口對象進行操作,第二類是返回一個容器接口對象,上節(jié)我們介紹了...
閱讀 2508·2021-10-11 10:59
閱讀 2700·2021-09-22 15:49
閱讀 2637·2021-08-13 13:25
閱讀 1285·2019-08-30 13:14
閱讀 2386·2019-08-29 18:45
閱讀 2990·2019-08-29 18:36
閱讀 1482·2019-08-29 13:21
閱讀 1157·2019-08-26 11:44