- 单例模式
用于创建唯一的一个对象。
核心在于一个判断
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 //创建iframe 21 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来代替
策略模式的目的是将算法的使用与算法的实现分离开来。
- 代理模式
时间: 2024-11-05 14:43:28