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;
}
}附:
创建型模式(5)
- Java设计模式之工厂方法Factory Method
- Java设计模式之创建者Builder
- Java设计模式之抽象工厂模式Abstract Factory
- Java设计模式之单例模式Singleton
- Java设计模式之原型模式Prototype
结构型模式(7)
- Java设计模式之适配器Adapter
- Java设计模式之桥接模式Bridge
- Java设计模式之组合模式Composite
- Java设计模式之装饰模式Decorator
- Java设计模式之外观模式Facade
- Java设计模式之享元模式Flyweight
- Java设计模式之代理模式Proxy