建立型—單例模式

一、單例模式的意圖:函數

  保證一個類僅有一個實例,並提供一個訪問它的全局訪問點。spa

  所謂的全局訪問點,在代碼層次表現爲類中的靜態函數,經過類名便可調用。code

二、單例模式類圖:對象

  

角色blog

  • SingletonClass:經過一個類的public static的成員函數,容許用戶類訪問它的惟一實例;同時用一個私有的SingletonClass類型的靜態成員變量來引用它的惟一實例。

協做get

  • 用戶類只能經過單例類(SingletonClass)公開的靜態成員函數來獲取單例類的惟一實例。

三、適用性:class

  • 當類只能有一個實例並且用戶能夠從一個衆所周知的訪問點訪問它時。
  • 當類可經過子類化來進行擴展,且系統中只能存在全部子類中的一個時。

四、代碼實現:變量

 1 package com.crazysnail.singleton;
 2 
 3 public class Singleton {
 4     private static Singleton theSingleton;
 5     
 6     public static Singleton getInstance(){
 7         if(theSingleton==null)
 8             theSingleton = new Singleton();
 9         
10         return theSingleton;
11     }
12     
13     protected Singleton(){
14         /*對類中的數據成員進行初始化操做*/
15     }
16     
17     /*類的其餘域和相關的操做*/
18 }

五、單例模式的特色:擴展

  • 確保了實例的惟一性
  • 由類自己控制了惟一實例的實例化過程,能夠方便的修改類的實例化過程
  • 每次對象請求引用時都要檢查是否存在類的實例,這形成必定的開銷
相關文章
相關標籤/搜索