可以說單例模式是所有設計模式中最簡單的一種。
單例模式就是說系統中對於某類的只能有乙個物件,不可能出來第二個。
單例模式也是23中設計模式中在面試時少數幾個會要求寫**的模式之一。主要考察的是多執行緒下面單例模式的執行緒安全性問題。
1.多執行緒安全單例模式例項一(不使用同步鎖)
1 public class singleton
5 public static singleton getsin()
8 }
上述**中的乙個缺點是該類載入的時候就會直接new 乙個靜態物件出來,當系統中這樣的類較多時,會使得啟動速度變慢 。現在流行的設計都是講「延遲載入」,我們可以在第一次使用的時候才初始化第乙個該類物件。所以這種適合在小系統。
2.多執行緒安全單例模式例項二(使用同步方法)
1 public class singleton
6 public static synchronized singleton getinstance()
11 }
上述**中的一次鎖住了乙個方法, 這個粒度有點大 ,改進就是只鎖住其中的new語句就ok。就是所謂的「雙重鎖」機制。
3.多執行緒安全單例模式例項三(使用雙重同步鎖)
1 public class singleton
5 public static singleton getinstance()
11 }
12 return instance;
13 }
14
15 }
4.多執行緒安全單例模式例項四(使用valotile關鍵字去指令重排)public class singleton
private static singleton instance;
private static valotile singleton getinstance()
}
return instance;
}
設計模式 單利模式
單例模式的核心是保證乙個類只有乙個例項,並且提供乙個訪問例項的全域性訪問點。1 spring中bean物件的模式實現方式 2 servlet中每個servlet的例項 3 springmvc框架中,控制器物件是單例模式 4 專案中,讀取配置檔案的類,一般也只有乙個物件。沒有必要每次使用配置檔案資料,...
Dockerfile之最佳實踐
docker 是乙個開源,輕量級的應用容器引擎,基於 golang 語言開發,用於建立 管理和編排容器。與 vmware 虛擬機器相比,docker 使用容器承載應用程式,而不使用作業系統,所以它的開銷很少,效能很高。但是 docker 對應用程式的隔離不如虛擬機器徹底,所以它並不能完全取代 vmw...
設計模式 單利
單利設計模式 解決乙個類在記憶體只存在乙個物件 步驟 1 建構函式私有化 2 類中建立本類物件 3 提供乙個方法可以獲取到該物件 1 餓漢式 class single private static single s new single public static single getinstanc...