設計模式之單例模式

2021-07-06 08:31:42 字數 1000 閱讀 3779

單例模式,就是在程式執行中只能例項化出乙個例項,不論在**使用這個類就是這同乙個例項,也就是說它例項的位址、內容是一樣的。

單例模式首先要將類的建構函式私有化,使這個類不能在外部例項化。

然後寫乙個公共函式,專門例項化這個類 ---- 如果這個類沒有例項化過,就例項化一次然後返回這個例項,如果例項化過,就直接返回例項化過的類。

class singleton

public static singleton getinstance()

return instance;

}}

這正方法在單執行緒中有效,但是在多執行緒中,有可能兩個或多個執行緒同時呼叫這個方法,而之前都沒有例項化過,因此在每個執行緒中它的 instance 就都是 null ,然後就都例項化一次,這樣他們例項化出的類就不是同乙個例項了,因此在多執行緒中不能這樣寫,要同時使用到執行緒鎖。

class singleton

public static singleton getinstance()

}return instance;

}}

但是這種方法每次呼叫都要 lock,比較影響效能,解決方法就是使用雙重鎖定,在 lock 之前先判斷 instance 有沒有例項化過。

class singleton

public static singleton getinstance()

}} return instance;

}}

上面這種方法被稱為 懶漢式單例類,因為它是在需要例項的時候才例項化自己。而還有一種 餓漢式單例類 ,它是在載入時就例項化。

public sealed class singleton

public static singleton getinstance()

}

sealed 是為了防止發生派生,而派生可能會增加例項

設計模式之單例模式

前一段時間買了一本秦小波寫的 設計模式之禪 網上對這書的評價很高。現在還沒有看很多,但是有些地方頗有感觸,也並不是所有的地方都能看懂,但是會慢慢研究的。自己對於設計模式的感覺就是乙個字 牛!感覺會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...