设计模式(四)---单例模式

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;
    }
}

 

原文地址:https://www.cnblogs.com/shun-gege/p/7459231.html