設計模式之單例模式

2021-09-26 06:57:45 字數 1813 閱讀 4305

/**

* 描述:示例單例類

* 由單例類定義,單例類需確保某乙個類只有乙個例項,而且自行單例化並向整個系統提供這個例項,所以我們需要進行完善修改

*/class

singleton

/**

* 描述:單例類(餓漢模式)

* 這樣的singleton類,建構函式私有化以便不可在類外部通過new關鍵字建立物件,只能通過getinstance()方法獲取物件,保證了物件的獲取。final關鍵字確定了singleton物件建立之後不可修改,再由getinstance()方法返回singleton物件,這樣就保證了之後建立singleton物件都會指向singleton物件位址,就這樣實現了單例。

*/class

singleton

public

static singleton getinstance()

}public

class

test

}

/**

* 描述:懶漢模式(存在多執行緒併發的問題,多執行緒併發呼叫getinstance()方法,導致系統同時建立多個單例類例項)

* @version 1.0

*/class

singleton

public

static singleton getinstance()

return singleton;

}}

/**

* 描述:懶漢模式(方法新增synchronized鎖),效能較差。

*@version 2.0

*/class

singleton

public

static

synchronized singleton getinstance()

return singleton;

}}

/**

* 描述:懶漢模式(雙重校驗鎖,但會出現指令重排問題)

* * @version 3.0

*/class

singleton

public

static singleton getinstance()

}return singleton;

}}

/**

* 詳細解釋:多執行緒情況下,執行緒a為獲取物件進入getinstance()方法,進行第一次校驗,此時物件為空,即單例未初始化,對此類作為物件加鎖;執行緒b為獲取物件進入getinstance()方法,進行第一次校驗,此時物件為空,想進入**塊但已被執行緒a鎖定;執行緒a進行第二次校驗,因為單例依舊沒有例項化,所以進行例項化,成功例項化後退出**塊,解除鎖定,最終獲得單例例項並返回;執行緒b加鎖,進行第二次校驗,因為單例已經被執行緒a初始化,解除鎖定,最終獲得例項並返回;

* @version 4.0

*/class

singleton

public

static singleton getinstance()

}}return singleton;

}}

/**

* 描述:靜態內部類單例模式

* */

class

singleton

private

singleton()

public

static singleton getinstance()

}

設計模式之單例模式

前一段時間買了一本秦小波寫的 設計模式之禪 網上對這書的評價很高。現在還沒有看很多,但是有些地方頗有感觸,也並不是所有的地方都能看懂,但是會慢慢研究的。自己對於設計模式的感覺就是乙個字 牛!感覺會23種設計模式並且會熟練運用的人,真的就是大師級的牛人了,設計模式是乙個專案主管或者架構師一定要會的東西...

設計模式之單例模式

package com.xie.singleton public class singleton 提供乙個共有的靜態的入口方法 public static singleton getinstance 懶漢式 延遲載入 提供乙個私有的靜態的成員變數,但不做初始化 private static sing...

設計模式之 單例模式

單例模式 singleton 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。單例模式 單件模式 使用方法返回唯一的例項 public class singleton private static singleton instance public static singleton geti...