設計模式之單例模式

2021-08-18 22:35:44 字數 1037 閱讀 8041

單例模式顧名思義,乙個類只允許有乙個例項,因而只能建立一次,之後訪問返回的都是第一次建立的例項。因為不能隨意建立,單例類的構造方法都是私有的,只能通過靜態方法來獲取例項。

單例模式分為餓漢模式和懶漢模式,區別在於建立例項的時機不同:餓漢模式在類初始化的時候建立;懶漢模式在呼叫獲取例項方法時建立。

1. 懶漢模式(lazy)

public class lazysingleton 

public static lazysingleton getinstance()

return singleton;

}}

採用懶載入的方式:在需要的時候再建立例項,但上面的實現不是執行緒安全的,需要採用二重檢查來保證執行緒安全。

public class lazysingleton 

public static lazysingleton getinstance()

}} return singleton;

}}

2. 餓漢模式

public class hungrysingleton 

public static hungrysingleton getinstance()

}

在類初始化的時候建立例項,之後獲取到的例項都是第一次所建立的,天然執行緒安全。缺點在於,無論你是否需要建立例項,都會在類初始化的時候建立。

3. 匿名內部類實現

public class innerclasssingleton 

private static class innerclass

public static innerclasssingleton getinstance()

}

在內部類初始化的時候建立例項,與餓漢模式的區別在於可以控制內部類初始化的時機:只有在呼叫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...