标签:
单例模式的定义:确保一个实例,并提供全局访问。
惰性单例的定义:只在需要的时候才创建对象。
在开发中,有些对象往往只需要一个,比如线程池、全局缓存、浏览器中的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);
标签:
原文地址:http://www.cnblogs.com/bobodeboke/p/5595730.html