没有合适的资源?快使用搜索试试~ 我知道了~
单例模式的总体概述 单例模式,属于创建型模式,《设计模式》一书对它做了定义:保证一个类仅有一个实例,并提供一个全局访问点。 单例模式适用于无状态的工具类、全局信息类等场景。例如日志工具类,在系统中记录日志;假设我们需要统计网站的访问次数,可以设置一个全局计数器。 单例模式的优势有 在内存里只有一个实例,减少了内存开销; 可以避免对资源的多重占用; 设置全局访问点,严格控制访问。 单例模式的研究重点大概有以下几个: 构造私有,提供静态输出接口 线程安全,确保全局唯一 延迟初始化 防止反射攻击 防止序列化破坏单例模式 多种实现方式与比较 线程安全的饿汉模式 public class HungryS
资源详情
资源评论
资源推荐
单例设计模式实现总结单例设计模式实现总结
单例模式的总体概述单例模式的总体概述
单例模式,属于创建型模式,《设计模式》一书对它做了定义:保证一个类仅有一个实例,并提供一个全局访问点。
单例模式适用于无状态的工具类、全局信息类等场景。例如日志工具类,在系统中记录日志;假设我们需要统计网站的访问次
数,可以设置一个全局计数器。
单例模式的优势有
在内存里只有一个实例,减少了内存开销;
可以避免对资源的多重占用;
设置全局访问点,严格控制访问。
单例模式的研究重点大概有以下几个:
构造私有,提供静态输出接口
线程安全,确保全局唯一
延迟初始化
防止反射攻击
防止序列化破坏单例模式
多种实现方式与比较多种实现方式与比较
线程安全的饿汉模式线程安全的饿汉模式
public class HungrySingleton {
private final static HungrySingleton instance = new HungrySingleton();
private HungrySingleton() {
}
public static HungrySingleton getInstance() {
return instance;
}
}
也可以通过静态代码块的形式实现。实现与静态常量基本相同,只是把实例化过程放到了静态代码块中。
private final static HungrySingleton2 instance;
static {
instance = new HungrySingleton2();
}
饿汉单例模式的特点有
实现简单
线程安全
类加载时初始化实例
线程安全的懒汉单例模式线程安全的懒汉单例模式
懒汉式用于解决延迟初始化问题,用到了才实例化。
public class LazySingleton {
private static LazySingleton instance;
private LazySingleton() {
}
public static LazySingleton getInstance() {
if (instance == null) {
instance = new LazySingleton();
}
return instance;
}
}
对于多线程来说,上面的实现存在竞态条件:先检查后执行,无法保证全局唯一。
通过给getInstance方法添加synchronized修饰,或者同步代码块形式很容易实现线程安全,保证全局唯一。
weixin_38539018
- 粉丝: 6
- 资源: 943
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0