摘要:以上,吐槽完畢設計模式主要分為三大類創建型模式結構型模式行為模式。單例模式所謂單例模式,是指僅實例化該類一次,該實例提供一個眾所周知的全局訪問點。單例模式暫時這么些,如果后續了解更多會默默補充上來,下一次會分享工廠模式。
初入js坑時,滿臉懵逼的我認為設計模式就該是后端頭疼的,對,頭疼,蓋因粗略掃描下來也就十幾二十種吧,彼時頗有種隔岸觀火看到你過得不好我也就安心的自得。染鵝,打臉啪啪的,實不應忘記javascript前可不是白綴個java的,怎么能不趟一下設計模式這“渾水”。
--以上,吐槽完畢
設計模式主要分為三大類:創建型模式、結構型模式、行為模式。本篇只涉及創建型模式,表問我為什么,因為其他兩種我也不了解,淚目。
所謂創建型模式,是指基于創建對象的概念。單例模式、工廠模式、抽象工廠模式就屬于典型的創建型模式。
單例模式所謂單例模式,是指僅實例化該類一次,該實例提供一個眾所周知的全局訪問點。為什么要限制僅實例化一次呢?因為全局只需要一個poly啊。例如在封裝組件Alert的時候,只需要實例化一次,將該實例掛在全局對象下,這樣除了第一次調用的時候需要實例化,后續都是在確認已有Poly實例后,直接調用已有的唯一實例,只是需要傳入不同的提示語句作為參數。
- 懶漢式
// code 1 var poly = (function(){ var instance; var Poly = function(){ this.name = "Poly"; }; return { getInstance: function(){ if (!instance) { instance = new Poly(); console.log("init onece"); } return instance; } } })();
運行結果如下:
以上代碼,只打印了一次init onece,除了第一次走進if (!instance)條件語句中進行實例化,后續兩次并沒有實例化,而是直接返回Poly的實例。
- 餓漢式
你應該看出來了,以上代碼是在調用poly對象的getInstance方法時才進行實例化,還有一種情形是poly對象獲得的直接是Poly類的一個實例,如下:
// code 2 var poly = (function(){ var instance; var Poly = function(){ this.name = "Poly"; }; if (!instance) { instance = new Poly(); console.log("init onece"); } return instance; })();
運行結果如下:
code 1 和 code 2所展示的是單例模式的兩種使用方式:懶漢式和餓漢式(這名字略粗獷的趕腳?蜜汁微笑?)。懶漢式即延遲到使用時才實例化,餓漢式即一開始加載類時就實例化。前者省空間,后者省時間,按需食用,oh不,按需使用。
單例模式暫時這么些,如果后續了解更多會默默補充上來,下一次會分享工廠模式。
話說,貌似說了很多“下一次”這類話?難怪懂得這么多道理還減不好這場肥。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/81216.html
摘要:文章系列設計模式單例模式設計模式策略模式設計模式代理模式概念單例模式的定義是保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。在開發中,單例模式的用途同樣非常廣泛。 前言 本系列文章主要根據《JavaScript設計模式與開發實踐》整理而來,其中會加入了一些自己的思考。希望對大家有所幫助。 文章系列 js設計模式--單例模式 js設計模式--策略模式 js設計模式--代理模式 概念...
摘要:什么是設計模式設計模式是一種能夠被反復使用,符合面向對象特性的代碼設計經驗的總結,合理的使用設計模式能夠讓你得代碼更容易維護和可靠設計模式的類型共分為創建型模式,結構型模式,行為型模式三種創建型模式創建型模式是對一個類的實例化過程進行了抽象 什么是設計模式 設計模式是一種能夠被反復使用,符合面向對象特性的代碼設計經驗的總結,合理的使用設計模式能夠讓你得代碼更容易維護和可靠設計模式的類型...
摘要:什么是單例模式單例模式是一種十分常用但卻相對而言比較簡單的單例模式。對象就是單例模式的體現??偨Y單例模式雖然簡單,但是在項目中的應用場景卻是相當多的,單例模式的核心是確保只有一個實例,并提供全局訪問。 1. 什么是單例模式? 單例模式是一種十分常用但卻相對而言比較簡單的單例模式。它是指在一個類只能有一個實例,即使多次實例化該類,也只返回第一次實例化后的實例對象。單例模式不僅能減少不必要...
閱讀 2925·2023-04-26 02:22
閱讀 2286·2021-11-17 09:33
閱讀 3127·2021-09-22 16:06
閱讀 1062·2021-09-22 15:54
閱讀 3530·2019-08-29 13:44
閱讀 1905·2019-08-29 12:37
閱讀 1316·2019-08-26 14:04
閱讀 1905·2019-08-26 11:57