设计模式----创建型型模式之单件模式(Singleton pattern)
2024-10-21 02:50:13
单件模式,又称单例模式,确保一个类只有一个实例,并提供全局访问点。
单件模式是比较简单且容易理解的一种设计模式。只有一个实例,通常的做法。。。TODO
类图比较简单,如下所示:
示例代码:
懒汉模式(初始化时就创建对象):
public class Singleton {
private final static Singleton uniqueInstance= new Singleton(); private Singleton() {} public static Singleton getInstance() {
return uniqueInstance;
}
}
饿汉模式(需要时就创建对象):
public class Singleton {
private static volatile Singleton uniqueInstance= null; private Singleton() {} public static Singleton getInstance() {
if(uniqueInstance== null){
synchronized(this.class){
if(uniqueInstance== null){
INSTANCE = new Singleton();
}
}
}
return uniqueInstance;
}
}
对某一个类实例化仅一个实例,不涉及类之间的依赖等关系。单件模式注意的地方:单例模式(懒汉模式)在多线程应用下需要谨慎,因为
多个线程同时调用创建实例方法,没有检测到唯一实例的存在,导致各自创建一个实例。当然,上述的代码利用“双重检查加锁”实现减少同synchronized同步所消耗的时间。注:"双重检查加锁"方式只适合jdk5及以后的版本
单件模式相对比较简单,但是很有实用性。例如获取线程池实例等。
共勉!!!
最新文章
- Calendar类测试
- 获取客户端真实ip
- table数据表格添加checkbox进行数据进行两个表格左右移动。
- java 泛型接口示例
- VB.NET读取Excel工作表信息
- sftp配置
- Sass中的mixin,function,extend
- The Dangers of JavaScript’s Automatic Semicolon Insertion
- lcx源代码以及免杀的研究
- android recover 系统代码分析 -- 选择进入
- Android开发之布局优化
- 这 5 个前端组件库,可以让你放弃 jQuery UI
- Vue.js2.0中的变化(持续更新中)
- ●BZOJ 4361 isn
- git使用:本地分支merge到远程分支
- Project中最常用的注意点
- install scrapy
- Module 的语法
- shell 备份 source code
- python之对字符串类型的数组求平均值