摘要:但是,這并不是采用單例的唯一原因。使用命名空間單例模式也被稱為模塊設計模式。函數內部聲明了一些局部函數和或變量。緊隨函數聲明放置即可立即執行外部函數,并將所得的對象文字費賠給變量。
JavaScript設計模式-第一部分:單例模式、組合模式和外觀模式
設計模式是一些可靠的編程方式,有助于保證代碼更加易于維護、擴展及分離,所有設計模式在創建大型JavaScript應用程序時均不可或缺
單例模式單例模式是指在您要確保始終只創建一個對象實例時使用的設計模式。在面向對象的經典編程語言中,創建單例模式背后的概念多少有點讓人難以理解,因為其中包含一個同時具有靜態及非靜態屬性和方法的類。但本文主要討論JavaScript,因此,由于JavaScript是一種不包含真正類的動態語言,因此JavaScript版本的單例模式極其簡單。
為什么需要采用單例模式?
在我開始介紹實施細節之前,我需要探討一下為什么單例模式對于應用程序非常有用。它能夠確保您只有一個對象實例能夠實際派上用場。在服務器端語言中,您可能會使用單例處理數據庫連接,這是由于為一個請求創建多個數據庫連接純粹是一種資源浪費。同樣,在前端JavaScript中,您可能會希望將負責處理所有AJAX請求的某個對象設置為單例。規則非常簡單:如果每m次創建新實例時,實例的功能均完全相同,那么將其設置為單例。
但是,這并不是采用單例的唯一原因。至少在JavaScript中,單例可讓您保證命名空間對象和函數井然有序,防止它們與全局命名空間混淆,您可能明白,這是一種可怕的想法,特別是在使用第三方代碼的情況下。使用命名空間單例模式也被稱為模塊設計模式。
展示單例模式
要創建單例,您只需創建一個對象文字。
var Singleton = { prop: 1, another_prop: "value", method: function() {...}, another_method: function() {...} };
您還可以創建具有私有屬性和方法的單例,但由于設計使用封閉函數和自調用匿名函數,因而稍微有些難以理解。函數內部聲明了一些局部函數和/或變量。然后,創建并返回一個對象文字,其中包含一些引用您在更大的函數范圍內聲明的變量和函數方法。緊隨函數聲明放置()即可立即執行外部函數,并將所得的對象文字費賠給變量。如果這些介紹讓你感到困惑,那么請看下面的代碼,隨后我將會作出進一步的說明。
var Singleton = (function() { var private_property = 0, private_method = function () { console.log("This is private"); } return { prop: 1, another_prop: "value", method: function() {...}, another_method: function() {...} } }());
關鍵在于,當通過某個變量所在函數前方的var聲明該變量時,該變量只能在函數內部通過該函數內聲明的各函數(例如對象文字內函數)進行訪問。return語句可幫助我們回到在外部函數自行執行后分配給單例的對象文字。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/81160.html
摘要:想繼續了解設計模式必須要先搞懂面向對象編程,否則只會讓你自己更痛苦。創建型設計模式主要有簡單工廠模式,工廠方法模式,抽象工廠模式,建造者模式,原型模式和單例模式,下面一一道來。而工廠方法模式本意是將實際創建對象的工作推遲到子類中。 接觸前端兩三個月的時候,那時候只是聽說設計模式很重要,然后我就去讀了一本設計模式的書,讀了一部分,也不知道這些設計模式到底設計出來干嘛的,然后就沒再看了。后...
摘要:常用設計模式大型單頁應用里,復雜度上升到一定程度時,沒有適當的設計模式進行降耦,后續的開發也難以下手。而設計模式正是為了降耦而存在。特點滿足單一職責原則使用代理模式,不在構造函數中判斷是否已經創建過該單例滿足惰性原則應用彈出登陸窗口。 JS常用設計模式 大型單頁應用里,復雜度上升到一定程度時,沒有適當的設計模式進行降耦,后續的開發也難以下手。而設計模式正是為了降耦而存在。 單例模式 單...
摘要:抽象工廠模式是為了處理對象具有等級結構以及對象族的問題。單例設計模式單例模式確保某一個類只有一個實例,而且自行實例化并向整個系統提供這個實例,這個類成為單例類。 導語:設計模式是無數碼農前人在實際的生產項目中經過不斷的踩坑、爬坑、修坑的經歷總結出來的經驗教訓,經過抽象之后表達成的概念。能夠幫助后來的設計者避免重復同樣的錯誤或者彎路。我也抽空整理了一下設計模式,用自己的話總結了一下,自認...
摘要:寫在前面設計模式是程序員通識知識,熟練掌握并使用各種設計模式,可以體現一個程序員的工程開發水平。我花了幾天時間,重溫并整理了多種設計模式,以為示例語言。節流模式對重復的業務邏輯進行節流控制,執行最后一次操作并取消其他操作,以提高性能。 寫在前面 設計模式是程序員通識知識,熟練掌握并使用各種設計模式,可以體現一個程序員的工程開發水平。我花了幾天時間,重溫并整理了30多種設計模式,以Jav...
閱讀 3479·2023-04-25 22:45
閱讀 1282·2021-11-11 16:54
閱讀 2790·2019-08-30 15:44
閱讀 3190·2019-08-30 15:44
閱讀 1646·2019-08-30 13:55
閱讀 941·2019-08-29 18:45
閱讀 1195·2019-08-29 17:25
閱讀 1007·2019-08-29 12:59