靜態內部類的方式
列舉
/**
* 餓漢式
* 私有化靜態空參構造器
* 初始化靜態變數
* 新增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 ...