单例模式(Singleton Pattern)是一种创建型设计模式,其目的是确保一个类在整个应用程序中只有一个实例,并且提供一个全局访问点来获取这个实例。单例模式常用于那些需要频繁实例化却又希望在整个应用中只存在一个实例的情况,例如线程池、缓存、配置设置、日志对象等。
单例模式的特点和实现要点:
单例模式的两种典型实现方式:
/**
* 单例模式-懒汉
* 在调用创建方法的时候 才会创建对象; 注意线程安全问题
*/
public class Singleton {
private volatile static Singleton singleton;
private Singleton(){
}
public static Singleton getInstance(){
if (singleton == null){
// 双重校验机制 防止第一次多线程的情况下满足条件一 导致创建两个不同对象
synchronized (Singleton.class){
if (singleton == null){
singleton = new Singleton();
}
}
}
return singleton;
}
}
/**
* 单例模式-饿汉
* 在调用方法之前就被创建出来
*/
public class SingletonE {
private static SingletonE singletonE;
private SingletonE(){}
public SingletonE getSingletonE(){
return singletonE;
}
}
总的来说,单例模式通过对类实例化过程的控制,实现了对象实例的全局唯一性,降低了系统资源消耗,并提高了系统各部分之间的协作效率。但它也可能带来全局状态难以测试、不易于拓展等问题,因此在实际应用中应谨慎权衡使用。