標籤:個人 class click singleton java dex gets 分離 初始化
用於建立唯一的一個對象。
核心在於一個判斷
var index if(index){ return index; } init(); 這樣只會在第一次的時候初始化建立對象,以後都不會再建立對象。 還有閉包內的變數不會銷毀,例如index可以始終存在。 js的實現:
1 var getSingle = function (fn) { 2 var result; 3 return function () { 4 return result || (result = fn.apply(this, arguments)); 5 }; 6 }; 7 //建立登陸div 8 var createSingletonLoginLayer = getSingle(function () { 9 var div = document.createElement(‘div‘);10 div.innerHTML = ‘我是懸浮窗‘;11 div.style.display = ‘none‘;12 document.body.appendChild(div);13 return div;14 });15 16 document.getElementById(‘loginBtn‘).onclick = function () {17 var loginLayer = createSingletonLoginLayer();18 loginLayer.style.display = ‘block‘;19 };20 //建立iframe21 var createSingleIframe = getSingle(function () {22 var iframe = document.createElement(‘iframe‘);23 document.body.appendChild(iframe);24 return iframe;25 });26 27 document.getElementById(‘loginBtn2‘).onclick = function () {28 var loginLayer = createSingleIframe();29 loginLayer.src = ‘http://baidu.com‘;30 };
個人感覺這個模式挺囉嗦的,挺短的幾行代碼用完這個模式就變得貌似又臭又長,所以可用在驗證、以及可以複用的組件等地方。 不能複用真的感覺寫這麼長一串不值。
個人感覺這個模式核心在於把條件放在對象中代替用if來代替
策略模式的目的是將演算法的使用與演算法的實現分離開來。
javascript設計模式閱讀後的感悟與總結