單例模式和靜態類的區別對比

2021-08-28 09:05:02 字數 931 閱讀 7973

什麼是單例模式

單例模式指的是在應用***整個生命週期內只能存在乙個例項。***單例模式是一種被廣泛使用的設計模式。他有很多好處,能夠避免例項物件的重複建立,減少建立例項的系統開銷,節省記憶體。

單例模式和靜態類的區別

首先理解一下什麼是靜態類,靜態類就是乙個類裡面都是靜態方法和靜態field,構造器被private修飾,因此不能被例項化。math類就是乙個靜態類。

知道了什麼是靜態類後,來說一下他們兩者之間的區別:

1)首先單例模式會提供給你乙個全域性唯一的物件,靜態類只是提供給你很多靜態方法,這些方法不用建立物件,通過類就可以直接呼叫;

2)單例模式的靈活性更高,方法可以被override,因為靜態類都是靜態方法,所以不能被override;

3)如果是乙個非常重的物件,單例模式可以懶載入,靜態類就無法做到;

那麼時候時候應該用靜態類,什麼時候應該用單例模式呢?首先如果你只是想使用一些工具方法,那麼最好用靜態類,靜態模擬單例類更快,因為靜態的繫結是在編譯期進行的。***如果你要維護狀態資訊,或者訪問資源時,應該選用單例模式。***還可以這樣說,當你需要物件導向的能力時(比如繼承、多型)時,選用單例類,當你僅僅是提供一些方法時選用靜態類。

3.如何實現單例模式

餓漢模式

所謂餓漢模式就是立即載入,一般情況下再呼叫getinstancef方法之前就已經產生了例項,也就是在類載入的時候已經產生了。這種模式的缺點很明顯,就是占用資源,當單例類很大的時候,其實我們是想使用的時候再產生例項。因此這種方式適合占用資源少,在初始化的時候就會被用到的類。

class singletonhungary 

public static singletonhungary getinstance()

}

單例模式和靜態類的區別

1.首先明確一下,靜態成員並不是什麼程式載入時建立並初始化的,而是類載入時進行。類的載入是第一次真正用到它的時候 拿類new例項或呼叫它的靜態方法 進行的,而這個載入過程需要將 class 檔案中構成類的靜態和例項方法等類的成員的位元組碼指令一同載入到記憶體中,而後要為靜態域分配儲存空間並使用靜態塊...

靜態類和單例模式區別

單例模式限定為不是全用靜態函式實現的。1。使用的方便性 如果需要初始化工作,單例模式可以在建構函式裡面完成,全靜態函式的類需要乙個額外的函式來完成初始化工作,而且使用者如果沒有呼叫這個initialize函式,那麼後續的操作就會有問題,建構函式會被預設呼叫,所以使用起來比較簡單,對使用者做出了最少的...

靜態類和單例模式區別

觀點一 單例 單例模式比靜態方法有很多優勢 首先,單例可以繼承類,實現介面,而靜態類不能 可以整合類,但不能整合例項成員 其次,單例可以被延遲初始化,靜態類一般在第一次載入是初始化 再次,單例類可以被整合,他的方法可以被覆寫 最後,或許最重要的是,單例類可以被用於多型而無需強迫使用者只假定唯一的例項...