設計模式(一) 單例模式

2021-08-15 06:33:32 字數 839 閱讀 3656

這種模式只涉及到乙個單一的類,該類負責建立自己的物件,並確保只建立乙個物件。

單例只有乙個例項;

單例類必須建立自己唯一的例項;

單例類必須給其他物件提供這唯一的例項;

由於當今的程式設計模型都是基於多執行緒方式,因此此處只介紹執行緒安全的幾種實現。

第一次被呼叫時才建立物件,屬於懶載入(lazy-init), 節約一定的記憶體,但由於需要增加同步鎖,因此效能會低一些。

public

class lazysingleton

return lazysingleton;

}}

類載入時就建立物件,不屬於懶載入(lazy-init),因此會有一定的記憶體損耗,但不適用同步鎖,因此效能會高一些。

public

class hungrysingleton

}

採用雙重鎖的機制,屬於懶載入(lazy-init),既能保證執行緒安全,也不過多損失效能。

public

class dubblelocksingleton }}

return dubblelocksingleton;

}}

比雙重鎖實現簡單,比餓漢型更節省資源,因為是內部類被呼叫時才建立物件。

public

class staticinternalsingleton

public

static staticinternalsingleton getinstance()

}

設計模式 一 單例模式

思路 1 如果其他程式能夠隨意用new建立該類物件,那麼就無法控制個數。因此,不讓其他程式用new建立該類的物件。2 既然不讓其他程式new該類物件,那麼該類在自己內部就要建立乙個物件,否則該類就永遠無法建立物件了。3 該類將建立的物件對外 整個系統 提供,讓其他程式獲取並使用。步驟 1 將該類中的...

設計模式(一) 單例模式

單例模式 保證執行記憶體中只有乙個實體的實現模式就是單例模式,最常見的有餓漢模式 懶漢模式兩種。餓漢模式 package com.madg.design.singleton public class hungry public hungry getinstance 懶漢模式 package com....

設計模式(一) 單例模式

小結確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。確保某個類有且只有乙個物件的場景,避免產生多個物件消耗過多的資源。例如 建立乙個物件需要消耗的資源過多,比如io操作 資料庫操作等,這時就要考慮使用單例模式。public class ehansingleton public st...