設計模式 單例Singleton

2021-07-04 19:26:57 字數 1087 閱讀 1168

定義:確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。

使用場景:確保某個類有且只有乙個物件的場景,例如建立乙個物件需要消耗的資源過多,如要訪問 io 和資料庫等資源。

earth為例,簡單的單例模式可以寫成如下形式。

public

class

earth

public earth getinstance()

}

要點有兩個:

將預設建構函式私有化,外部無法通過new操作符新建物件。

維護earth的乙個靜態成員。

很多時候單例模式中的物件比較佔空間,為了效能需要,最好進行延遲載入。

public

class

earth

public earth getinstance()

return instance;

}}

但這種方式一般情況下沒問題,但併發的時候就有可能產生多個earth物件。可以使用同步機制解決多執行緒的問題,比如用synchronize修飾getinstance()方法,但這會影響效率,因為絕大多數情況下都是不需要同步的。

使用靜態內部類,可以實現延遲載入,又可以滿足多執行緒的要求,而且不影響效率。

public

class earth

/* 使用靜態內部類存放instance */

private

static

class holder

public

static earth getinstance()

}

由於instance不是earth的直接成員,所以當earth類被裝載時,並不會初始化instance,只有呼叫getinstance()時,才會裝載holder類,並初始化其靜態成員instance

單例設計模式(singleton)

單例設計模式的概念 作為物件建立模式,檔裡模式確保某個類只有乙個例項物件,而且自行建立例項並向整個系統提供這個例項。這個類稱為單例類!單例模式的提點 1,單例類只能有乙個例項 2,單例類的唯一例項必須自己建立 3,單例類必須向系統提供這個唯一的例項 餓漢單例類 public class eagers...

設計模式 單例Singleton

若是你希望自己寫的程式中的某個類只能有乙個相對應的例項,那麼這個時候就要用到單例模式了。單例模式是一種非常常見的設計模式,實現方法有好幾種,下面將一一介紹 1.懶漢式 public class singleton public static singleton getinstance return ...

設計模式 單例(Singleton)

單例設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。這種模式涉及到乙個單一的類,該類負責建立自己的物件,同時確保只有單個物件被建立。這個類提供了一種訪問其唯一的物件的方式,可以直接訪問,不需要例項化該類的物件。主要解決 乙個全域性使用的類頻繁地建立與銷毀。何時使用 當您想控制例項數目,節省系...