定义:确保一个类只有一个实例,并提供一个全局访问点!!
实现:
.懒汉式
public class Singleton1 {
private static Singleton1 singleton;
private Singleton1() {
}
public static synchronized Singleton1 getInstance() {
if (singleton == null) {
singleton = new Singleton1();
}
return singleton;
}
}
.饿汉式
public class Singleton2 {
private static Singleton2 singleton=new Singleton2();
private Singleton2() {
}
public static synchronized Singleton2 getInstance() {
return singleton;
}
}
.使用双重检查加锁
/**
* 使用双重检查加锁
*/
public class Singleton3 {
private static Singleton3 singleton;
private Singleton3() {
}
public static synchronized Singleton3 getInstance() {
if (singleton == null) {
synchronized (Singleton3.class) {
if (singleton == null) {
singleton = new Singleton3();
}
}
}
return singleton;
}
}