单体模式(单例模式)

  • 单体模式就是希望可以在使用方法创建对象的时候,我们无论创建多少次对象都指向同一个。
  1. //非单体模式
  2. //函数
  3. function notSingle(){
  4. return {
  5. a: 1
  6. }
  7. }
  8. var a = notSingle();
  9. var b = notSingle();
  10. console.log(a === b); //false
  11. //构造函数
  12. function notSingle1(){
  13. this.a = 123;
  14. }
  15. var a1 = new notSingle1();
  16. var b1 = new notSingle1();
  17. console.log(a1 === b1); //false
  1. // 单体模式
  2. var _unique = null;
  3. function createSingle(){
  4. var obj = {
  5. a: 1
  6. }
  7. if(_unique === null) {
  8. _unique = obj;
  9. }
  10. return _unique;
  11. }
  12. var a = createSingle();
  13. var b = createSingle();
  14. console.log(a === b);
  15. //上面的方式:因为_unique放在全局,所有不安全
  16. //利用IIFE,创造闭包,把_unique变为私有变量
  17. var createSingle = (function(){
  18. var _unique = null;
  19. function single(){
  20. return {
  21. a:1
  22. }
  23. }
  24. return function(){
  25. if(_unique === null){
  26. _unique = single();
  27. }
  28. return _unique;
  29. }
  30. })();
  31. var a1 = createSingle();
  32. var b1 = createSingle();
  33. console.log(a1 === b1);