1、简介
作为对象的创建模式,单例模式确保某一个类只有一个实例,并且自行实例化并向整个系统提供这个实例,这个类称为单例类
2、单例模式有以下三个特点
2.1、单例类只能有一个实例
2.2、单例类必须自己创建自己的唯一实例
2.3、单例类必须向其它对象提供这一实例
3.饿汉式单例模式
package Singleton; /** * ******************************************************** * @ClassName: EagerSingleton * @Description: 饿汉式单例模式 * ********************************************************** */ public class EagerSingleton { private static final EagerSingleton m_instance = new EagerSingleton(); //私有构造器 private EagerSingleton(){} public static EagerSingleton getInstance(){ return m_instance; } }
可以看出,当这个类被加载时,m_instance 会被初始化。此时类的私有构造器会被调用,这样单例类的唯一实例就被创建了
单例类的一大特点是类的构造器是私有的,从而避免了外界利用构造器直接创建出其它的实例,并且,由于构造器是私有,此类不能被继承
4、懒汉式单例模式
package Singleton; /** * ******************************************************** * @ClassName: LazySingleton * @Description: 懒汉式单例模式 * ********************************************************** */ public class LazySingleton { private static LazySingleton m_instance = null; //私有构造器 保证外界无法直接实例化 private LazySingleton(){} public synchronized static LazySingleton getInstance(){ if(null == m_instance){ m_instance= new LazySingleton(); } return m_instance; } }