public class Singleton {
private static Singleton uniqueInatance;
private Singleton() {
}
/**
* 经典方式,多线程环境下不能保证单例,懒加载模式
*
* @return
*/
public static Singleton getInstance() {
if (uniqueInatance == null) {
uniqueInatance = new Singleton();
}
return uniqueInatance;
}
/**
* 1.急切模式,能保证单例,一开始就创建实例
*/
private static Singleton uniqueInatance1 = new Singleton();
public static Singleton getUniqueInatance1() {
return uniqueInatance1;
}
/**
* 2.同步方式,能保证单例,但对性能影响比较大
*/
private static Singleton uniqueInatance2;
public static synchronized Singleton getUniqueInatance2() {
if (uniqueInatance2 == null) {
uniqueInatance2 = new Singleton();
}
return uniqueInatance2;
}
/**
* 3.双重检查模式,能保证单例,需要时创建对象,对性能影响可以忽略不计
*/
private volatile static Singleton uniqueInatance3;
public static synchronized Singleton getUniqueInatance3() {
if (uniqueInatance3 == null) {
synchronized (Singleton.class){
if (uniqueInatance3==null){
uniqueInatance3=new Singleton();
}
}
}
return uniqueInatance3;
}
}
java设计模式之单例
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 有些时候,我们想要一个类在整个系统中仅存在一个实例。比如说,系统给我们提供了一个打印机硬件设施,但是我们在系统中多...
- 单例设计模式(Singleton Pattern)是最简单且常见的设计模式之一,主要作用是提供一个全局访问且只实例...