单例模式
定义: 一个类只有一个实例,并提供访问它的全局访问点。
用一个变量来标记当前是否已经为某个类创建了对象。
透明单例模式
varcreateDiv=(function(){varinstance;varcreateDiv=function(html){if(instance){returninstance;}this.html=html;this.init();returninstance=this;}createDiv.prototype.init=function(){vardiv=document.createElement('div');div.innerHTML=this.html;document.body.appendChild(div);}returncreateDiv;})()代理实现单例模式
varcreateDiv=function(html){this.html=html;this.init()}createDiv.prototype.init=function(){vardiv=document.createElement('div');div.innerHTML=this.html;document.body.appendChild(div);}varProxySingletonCreateDiv=(function(){varinstance;returnfunction(html){if(!instance){instance=newcreateDiv(html);}returninstance;}})()惰性单例模式
vargetSingleton=function(fn){varresult;returnfunction(){returnresult||(result=fn.apply(this,arguments))}}varcreateLoginLayer=function(){vardiv=document.createElement('div');div.innerHTML='我是登录浮窗';div.style.display='none';document.body.appendChild(div);returndiv;};varcreateSingleLoginLayer=getSingle(createLoginLayer);document.getElementById('loginBtn').onclick=function(){varloginLayer=createSingleLoginLayer();loginLayer.style.display='block';};创建对象和管理单例的职责被分布在两个不同的方法中,这两个方法组合起来才具有单例模式的威力。
单例模式
定义: 一个类只有一个实例,并提供访问它的全局访问点。
透明单例模式
代理实现单例模式
惰性单例模式