单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。保证一个类仅有一个实例,并提供一个访问它的全局访问点。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。
单例模式
// 典型的单例模式例子(懒汉式) public class Singleton { private static Singleton instance = null; // 不能为final,因为getInstance()中还会更改其值 // 构造方法私有化是为了在外面不能实例化该类 private Singleton() { } // 单例模式关键代码 public static Singleton getInstance() { if (instance == null) { // 保证性能 synchronized(Singleton.class){ // 防止多线程并发时出现问题 if(instance == null) instance = new Singleton(); } } return instance; } }
单例模式分为三种情况:懒汉式(常用)、饿汉式、双重锁模式
// 饿汉式单例模式 public class Singleton { private static final Singleton instance = new Singleton(); private Singleton() { // do something } public static Singleton getInstance() { return instance; } }