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();
/* 单例就是保证一个类只有一个实例,实现方法一般是先判断实例是否存在,如果存在直接返回,
* 如果不存在就创建了再返回,这就确保了一个 类只有一个实例对象。在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
- 23种设计模式——1单例模式
- 23种设计模式——单例模式
- 23种设计模式之——单例模式
- 精通23种设计模式——单例模式
- 23种设计模式之——单例模式
- 【23种设计模式——单例模式】
- 23种设计模式——单例模式
- 23种设计模式—单例模式
- 设计模式—单例设计模式
- 设计模式之禅—23种设计模式详解_1 单例模式
- 23种设计模式-单例模式
- 23种设计模式~单例模式
- 23种设计模式-单例模式
- 23种设计模式-----单例模式
- 23种设计模式-单例模式
- 23种设计模式-单例模式
- 设计模式——单例模式
- 设计模式——单例模式
- Java静态导入(import static)
- 学习Spring MVC,关于注解的Spring MVC,关于控制器的Spring MVC,学习Spring,简单Spring MVC实例
- openwrt编译问题
- 建立修改文件系统
- cocopods 报错 _OBJC_CLASS_
- 23种设计模式——单例模式
- 百度推送
- linux基础(24)--磁盘配额--RHEL6.5
- 项目经验--人力资源系统项目
- Labeled Faces in the Wild 人脸识别数据集 部分训练数据
- android 中获取Bitmap的两种方法
- Android数据存储——SharedPreferences
- JAVA集合
- IOS 如何选择delegate、notification、KVO?