1. 程式人生 > >設計模式(四)---單例模式

設計模式(四)---單例模式

由於 div 懶漢式 其它 ins class single sin pub

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

 

設計模式(四)---單例模式