定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点;
结构图:略
示例代码:
public class Singleton {
private static Singleton INSTANCE = new Singleton();
private Singleton() {}
public static Singleton getInstance() {
if (INSTANCE == null) {
INSTANCE = new Singleton();
}
return INSTANCE;
}
//多线程情况下
public static Singleton getInstanceInMutilThread() {
synchronized (INSTANCE) {
if (INSTANCE == null) {
INSTANCE = new Singleton();
}
}
return INSTANCE;
}
}
客户端代码:
public class Client {
public static void main(String[] args) {
Singleton single1 = Singleton.getInstance();
Singleton single2 = Singleton.getInstance();
System.out.println(single1 == single2);
}
}
运行结果:true
说明single1和single2指向的的确是同一个对象,单例模式在web开发中应用得比较多,最常用的是spring中对bean的配置,spring中对bean默认就是单例方式,有isSingleton这个配置关键字