Java设计模式之单例模式Singleton
这应该是最简单的一个模式了,不用特意的学习,写的多了,自然就会用到。简而言之,单例(Singleton)就是一个在面向对象编程范式下的全局变量,它在程序的整个生命周期中只存在一份,并能够在不同模块、类或函数中被随时访问。因此,它要求:
-
构造函数私有化,确保只有一个对象实例可以被创建
-
提供全局访问点(如下的静态方法)
public class DatabaseConnection {
// 使用 volatile 关键字防止指令重排
private static volatile DatabaseConnection instance;
private DatabaseConnection() {
// ...
}
public static DatabaseConnection getInstance() {
// 第一层检查:如果实例已经存在,直接返回,不进入同步块
if (instance == null) {
synchronized (DatabaseConnection.class) {
// 第二层检查:进入同步块后,再次确认是否被其他线程创建
if (instance == null) {
instance = new DatabaseConnection();
}
}
}
return instance;
}
}