码迷,mamicode.com
首页 > 编程语言 > 详细

javascript设计模式学习之四——单例模式

时间:2016-06-18 10:05:22      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:

单例模式的定义:确保一个实例,并提供全局访问。

惰性单例的定义:只在需要的时候才创建对象。

在开发中,有些对象往往只需要一个,比如线程池、全局缓存、浏览器中的window对象等。

java中的单例

关键在于使用一个变量来标志当前是否为某个类创建过对象。

public class Singleton {  
    private Singleton() {}  
    private static Singleton single=null;  
    //静态工厂方法   
    public static Singleton getInstance() {  
         if (single == null) {    
             single = new Singleton();  
         }    
        return single;  
    
   }
}

这样的单例类有一定的“不透明性”,其使用者必须知道这是一个单例类,不能通过New xxx的方式创建实例,而是需要使用Singleton.getInstance方法来获取对象。

javascript中的单例模式

根据单例模式的特点:1)只有一个实例,2)对外提供全局访问;

1)javascript中的全局对象自变量无疑符合单例的特征,但其缺点是不可避免会有全局污染的问题;

2)下面是一种通用的惰性单例的实现方法

 

        document.addEventListener(DOMContentLoaded,function(){
      //getSingle是创建单例通用的方法
var getSingle=function(fn){ var ret; return function(){ return ret||(ret=fn.apply(this,arguments)); }; }; //下面以创建唯一的登陆浮窗为例 var createLoginLayer=function(){ var div=document.createElement(div); div.innerHTML=我是登陆浮窗; document.body.appendChild(div); return div; }; var getSingleLoginLayer=getSingle(createLoginLayer); var div1=getSingleLoginLayer(); var div2=getSingleLoginLayer(); console.log(div1===div2); //输出true },false);

 

javascript设计模式学习之四——单例模式

标签:

原文地址:http://www.cnblogs.com/bobodeboke/p/5595730.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!