我學設計模式 之 單例模式

sz_bdqn發表於2010-09-22

我學設計模式之單例模式

 

1 簡介:

       單例模式屬於建立模式。單例模式確保某一個類只有一個例項,而且自行例項化並向整個系統提供這個例項。這個類成為單例類。

 

2 單例模式的結構特點

       單例模式有如下特點:

1)        單例類只能有一個例項。

2)        單例類必須自己建立自己的唯一例項。

3)        單例類必須給其他所有物件提供一個例項。

 

3 單例類的UML

 

4 單例模式的用法

在這裡以日誌記錄器為例,闡述單例模式的用法,編寫一個日誌類,其程式碼如下:

/**

 * 單例模式的用法

 * @author Administrator

 * 使用單例模式實現日誌記錄器

 */

public class Loger {

 

    //私有的建構函式,不能在外部使用new來構造

    private Loger(){}

    private static Loger instance = new Loger();

    //返回例項

    public static Loger getInstance(){

       return instance;

    }

   

    public synchronized void logMessage(String msg){

       //在這裡完成日誌記錄操作,本例忽略這部分的程式碼

       System.out.println(msg);

    }  

   

    public static void main(String[] args) {

           Loger.getInstance().logMessage("測試!!!!!!");

    }

}

 

5.    單例模式的相關應用場景

1.       對於大部分軟體都有一個(甚至多個)屬性(properties)檔案存放系統配置。這樣的系統應該由一個物件來管理一個屬性的檔案。

2.       負責記錄網站來訪人數的元件

3.       一個論壇中帖子的瀏覽計數器

4.       一個系統的日誌記錄器

5.       記錄軟體系統內部事件、出錯資訊的部件

6.       對系統的表現進行檢查的部件

 

凡事系統使用一個全域性物件的地方都可以使用單例模式。

 

以後若理解更深刻會繼續總結,待續….

 

相關文章