23种设计模式——单例模式

来源:互联网 发布:五年目的放课后淘宝 编辑:程序博客网 时间:2024/06/05 14:31
// 单例模式
/* 单例就是保证一个类只有一个实例,实现方法一般是先判断实例是否存在,如果存在直接返回,
 * 如果不存在就创建了再返回,这就确保了一个 类只有一个实例对象。在javascript中,
 * 单例作为一个命名空间提供者,从全局命名空间里提供一个唯一的访问点来访问该对象.
 * 
 * 模式的作用:
 * 1.模块间同信
 * 2.系统中某个类的对象只能存在一个
 * 3.保护自己的属性和方法
 * 
 * 注意事项:
 * 1.注意this的使用
 * 2.闭包容易造成内存泄露,不需要的赶快干掉
 * 3.注意new的成本
 */
// 1.独立的对象, 建两个 一个xiaowang 一个 xiaoli
// 2.让xiaoli跟xiaowang通过门铃进行通信
// 3.先看一下xiaowang家有没有门 如果有门直接通过门铃通讯didi 如果没有先建门
var xiaowang = (function()
{
var xiaowangjianmen = function(message)
{
this.menling = message;
};
var men;
var info =
{
sendMessage : function(message)
{
if (!men)
{
men = new xiaowangjianmen(message);
}
return men;
}
};
return info;
})();
var xiaoli =
{
callxiaowang : function(msg)
{
var _wx = xiaowang.sendMessage(msg);
console.log(_xw.menling);
_xw = null; // 等待垃圾回收(闭包注意垃圾回收)
}
}
xiaoli.callxiaowang('didi');
// 页面上有6个按钮
// a,b,c => top
// d,e,f => banner
// 假设d按钮要取得a按钮绑定的值
var banner =
{
init : function()
{
this.render();
this.bind();
},
a : 4,
render : function()
{
var me = this;
me.btna = $('#d');
},
bind : function()
{
var me = this;
me.btna.click(function()
{
// 业务逻辑取出去
me.test();
})
},
test : function()
{
top.a = 6;
}
}
var top =
{
init : function()
{
this.render();
this.bind();
},
a : 4,
render : function()
{
var me = this;
me.btna = $('#a');
},
bind : function()
{
var me = this;
me.btna.click(function()
{
// 业务逻辑取出去
me.test();
})
},
test : function()
{
a = 5;
}
}
top.init();
banner.init();
1 0
原创粉丝点击