设计模式之: 单例
大白话:就是某个对象,类实例,只能有一个唯一的。并且可以提供全局访问。避免了反复实例化创建,又销毁;
详细介绍
- 本质:一个类只有唯一实例,并且要提供全局公共访问方法
- 解决什么: 一个全局使用的类型,避免频繁地创建和销毁,避免多个实例冲突
- 何时使用:当要控制实例个数,节省系统资源开销;
- 如何实现:判断全局是否有该实例,如果有则返回实例,没有则新创建,私有化构造器
- 生活案例:
- 每个班级学生只能有一个班主任
- 多个市县村只有一个省会
- 等等…
优点
- 内存只有一个实例,减少内存开销,尤其是频繁创建销毁的实例(如:管理首页缓存类)
- 避免对资源的多重占用(如:文件io操作)
项目案例
- 要求生产唯一标识序号类对象
- 需要消耗过多资源的对象,例如io操作,数据库链接,websocket等等…
- 网站消息弹框,提示框;
- 购物车场景
实现代码
class Single{
constructor(name){
this.name=name
this.instance=null
}
static getInstance(name){
if(!this.instance){
this.instance=new Single(name)
}
return this.instance
}
}