首页 > 代码库 > javascript设计模式阅读后的感悟与总结

javascript设计模式阅读后的感悟与总结

  • 单例模式

  用于创建唯一的一个对象。

  核心在于一个判断

  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://www.mamicode.com/‘http://baidu.com‘;30   };

 

  • 策略模式

  个人感觉这个模式挺啰嗦的,挺短的几行代码用完这个模式就变得貌似又臭又长,所以可用在验证、以及可以复用的组件等地方。 不能复用真的感觉写这么长一串不值。

  个人感觉这个模式核心在于把条件放在对象中代替用if来代替

  策略模式的目的是将算法的使用与算法的实现分离开来。

 

  • 代理模式

  

 

javascript设计模式阅读后的感悟与总结