js設計模式--單體模式
阿新 • • 發佈:2017-07-02
var 閉包 uniq har 單體模式 目的 全局 火狐 method
單體模式
-單體模式(singleton)是javaScript中最基本最有用的設計模式之一。
-這種模式提供了一種將代碼組織為一個邏輯單元的手段,這個邏輯單元中的代碼可以通過單一
的變量進行訪問。通過確保單體對象只存在一份實例,你就可以確信自己的所有代碼使用的都是
同樣的全局資源。
-簡單單體
-閉包單體
-惰性單體
-分支單體
<script type="text/javascript" charset="utf-8"> // 單體模式(singleton) // 1.簡單單體模式 var Singleton = { attr1 :true, attr2 : 10, method1 : function() { alert(‘i am method1‘); }, method2 : function() { alert(‘i am method2‘); } }; // alert(Singleton.attr1); //補充:劃分命名空間 var YF = {}; YF.Singleton = { attr1 : true, attr2 : 10, method1 : function() { alert(‘i am method1‘); }, method2 : function() { alert(‘i am method2‘); } };// 2.閉包單體模式 // 閉包的主要目的:保護數據 // 命名空間 var YF1 = {}; YF1.Singleton = (function(){ // 把塊級作用域裏的執行結果賦值給單體對象 // 優點,可以添加自己的私有成員,外部無法發文 var a1 = true; var a2 = 10; var f1 = function() { alert(‘f1‘); }; var f2 = function() { alert(‘f2‘); }; return { attr1 : a1, attr2 : a2, method1 : function() { return f1(); }, method2 : function() { return f2(); } }; })(); alert(YF1.Singleton.attr1); </script>
<script type="text/javascript" charset="utf-8"> // 單體模式(singleton) // 1.惰性單體,和閉包單體有一些相似的地方 // 頂層的命名空間 var YF = {}; YF.Base = (function() { // 私有變量,控制返回的單體對象 var uniqueInstance; // 構造器 初始化單體對象的方法 function init() { var a1 = true; var a2 = 10; var f1 = function(){ alert(‘f1‘); }; var f2 = function(){ alert(‘f2‘); }; return { attr1 : a1, attr2 : a2, method1 : function() { return f1(); }, method2: function() { return f2(); } }; } return { getInstance : function(){ if(!uniqueInstance){ // 如果不存在,則創建單體實例 uniqueInstance = init(); } return uniqueInstance; } }; })(); // 分支單體(判斷程序的分支 <瀏覽器的差異檢測>) var YF1 = {}; // 假設true為FireFox, false為IE var difference = true; YF1.More = (function(){ // 火狐瀏覽器內部的一些配置 var objA = { // 屬性1 // 屬性2 // 方法1 // 方法2 }; // IE覽器內部的一些配置 var objB = { // 屬性1 // 屬性2 // 方法1 // 方法2 }; return (difference) ? objA : objB; })(); </script>
js設計模式--單體模式