单例模式确保一个类只有一个实例,并提供一个全局访问点。
实现单例模式的几种方式:
1、饿汉式单例(线程安全)
//饿汉式单例类.在类初始化时,已经自行实例化 public class Singleton1 { private Singleton1() {} private static final Singleton1 single = new Singleton1(); //静态工厂方法 public static Singleton1 getInstance() { return single; } }
2、懒汉式单例(线程不安全)
//懒汉式单例类.在第一次调用的时候实例化自己 public class Singleton2 { private Singleton2() {} private static Singleton2 single=null; //静态工厂方法 public static Singleton2 getInstance() { if (single == null) { single = new Singleton2(); } return single; } }
3、双重检查加锁懒汉式单例(线程安全)
双重检查加锁适用于Java5 版本以上。
public class Singleton3 { private Singleton3() {} private volatile static Singleton3 single=null; //静态工厂方法 public static Singleton3 getInstance() { if (single == null) { synchronized(Singleton3.class){ if(single == null){ single = new Singleton3(); } } } return single; }}