設計模式 一 單例

2021-10-07 08:33:35 字數 1162 閱讀 5992

靜態內部類的方式

列舉

/**

* 餓漢式

* 私有化靜態空參構造器

* 初始化靜態變數

* 新增getinstance方法

*/public

class

singleton

public

static singleton getinstance()

}

// 在堆中以object物件申請一塊記憶體,並將位址壓入運算元棧

1.new #5

// 複製運算元棧頂的值

2. dup

// 呼叫構造方法

3. invokespecial #1

>

// 將棧頂的位址值複製給區域性變數表中1號位(即變數o)

4. astore_1

// 結束

5.return

/**

* 懶漢式

* 私有化靜態空參構造器

* 新增getinstance方法

* 判斷instance是否為null

* 對當前類class物件加鎖

* 如果進入方法後例項物件仍舊為null則初始化物件

*/public

class

singleton

public

static singleton getinstance()

}}return instance;

}}

/**

* 懶漢式

* 私有化靜態空參構造器

* 私有化靜態內部類

* 內部類中建立物件

* getinstance方法直接返回內部類中的instance

*/public

class

singleton

private singleton (

)public

static

final singleton getinstance()

}

/**

* 懶漢式

* 使用列舉例項化

*/public

enum singleton

設計模式(一) 單例設計模式

通過某個類在記憶體中只能建立唯一的乙個物件 1.該物件不是棧 全域性 物件 2.該物件只能是堆物件。1.將建構函式私有化 2.在類中定義乙個靜態的指標變數 一般為私有 並在類外初始化為空 3.定義乙個返回值為類指標的靜態成員函式。如果2中的指標物件為空,則初始化物件 若非空,直接返回該物件,保證類在...

設計模式 一 單例模式

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

設計模式(一) 單例模式

這種模式只涉及到乙個單一的類,該類負責建立自己的物件,並確保只建立乙個物件。單例只有乙個例項 單例類必須建立自己唯一的例項 單例類必須給其他物件提供這唯一的例項 由於當今的程式設計模型都是基於多執行緒方式,因此此處只介紹執行緒安全的幾種實現。第一次被呼叫時才建立物件,屬於懶載入 lazy init ...