設計模式(一)_單例模式
計劃6月份學習設計模式,一共23種設計模式,先6月份學1/4吧,學習6篇,今天就以最簡單的單例模式進行學習
概念:
java中單例模式是一種常見的設計模式,這裡主要介紹兩種:懶漢式單例、餓漢式單例。
單例模式有以下特點:
1、單例類只能有一個例項。
2、單例類必須自己建立自己的唯一例項。
3、單例類必須給所有其他物件提供這一例項。
單例模式確保某個類只有一個例項,而且自行例項化並向整個系統提供這個例項。在計算機系統中,執行緒池、快取、日誌物件、對話方塊、印表機、顯示卡的驅動程式物件常被設計成單例。這些應用都或多或少具有資源管理器的功能。每臺計算機可以有若干個印表機,但只能有一個Printer Spooler,以避免兩個列印作業同時輸出到印表機中。每臺計算機可以有若干通訊埠,系統應當集中管理這些通訊埠,以避免一個通訊埠同時被兩個請求同時呼叫。總之,選擇單例模式就是為了避免不一致狀態,避免政出多頭。
餓漢模式
package com.zhb;
/**
*
* <p>Title: Singleton</p>
* <p>Description:單例模式之餓漢模式 </p>
* @author zhb
* @date 2018年6月5日
*/
public class Singleton {
//建構函式私有化
private Singleton(){
}
private static Singleton instance = new Singleton();
public static Singleton getInstance(){
return instance;
}
}
測試
public static void main(String[] args) {
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
if(s1 == s2){
System.out.println("s1 和 s2 是一個例項");
}else{
System.out.println("s1 和 s2 不是一個例項");
}
}
//輸出結果為:s1 和 s2 是一個例項
懶漢模式
package com.zhb;
/**
*
* <p>Title: Singleton2</p>
* <p>Description:懶漢模式 </p>
* @author zhb
* @date 2018年6月5日
*/
public class Singleton2 {
//建構函式私有化
private Singleton2(){
}
private static Singleton2 instance ;
public static Singleton2 getInstance(){
if(instance == null){
instance = new Singleton2();
}
return instance;
}
}
測試
public static void main(String[] args) {
Singleton2 s3 = Singleton2.getInstance();
Singleton2 s4 = Singleton2.getInstance();
if(s3 == s4){
System.out.println("s3 和 s4 是一個例項");
}else{
System.out.println("s3 和 s4 不是一個例項");
}
}
// 輸出結果:s3 和 s4 是一個例項
兩種模式對比
- 餓漢模式的特點是:載入類時比較慢,但執行時獲取物件速度快,執行緒安全;
- 懶漢模式的特點是:載入類時比較快,但執行時獲取物件速度慢,執行緒不安全;
學習不是要麼0分,要麼100分的。80分是收穫;60分是收穫;20分也是收穫。有收穫最重要。但是因為著眼於自己的不完美,最終放棄了,那就是徹底的0分了。
相關文章
- 設計模式一(單例模式)設計模式單例
- javascript設計模式一: 單例模式JavaScript設計模式單例
- 設計模式(一)之單例模式設計模式單例
- [設計模式]單例設計模式設計模式單例
- 設計模式-單例模式設計模式單例
- [設計模式] 單例模式設計模式單例
- 設計模式 —— 單例模式設計模式單例
- 設計模式(單例模式)設計模式單例
- 設計模式——單例模式設計模式單例
- 設計模式--單例模式設計模式單例
- 設計模式 單例模式設計模式單例
- java設計模式其一 單例模式Java設計模式單例
- 設計模式-單例模式、多例模式設計模式單例
- 設計模式學習(一)單例模式補充——單例模式析構設計模式單例
- 設計模式之單例設計模式設計模式單例
- 設計模式(一)建立型之單例模式設計模式單例
- 設計模式之☞單例模式設計模式單例
- Java設計模式–單例模式Java設計模式單例
- Java設計模式——單例模式Java設計模式單例
- Java設計模式--單例模式Java設計模式單例
- js設計模式--單例模式JS設計模式單例
- Java設計模式 | 單例模式Java設計模式單例
- 設計模式之單例模式設計模式單例
- Java設計模式【單例模式】Java設計模式單例
- 設計模式之---單例模式設計模式單例
- 設計模式(二)——單例模式設計模式單例
- PHP設計模式_單例模式PHP設計模式單例
- 設計模式系列-單例模式設計模式單例
- 設計模式1——單例模式設計模式單例
- 設計模式(七):單例模式設計模式單例
- PHP設計模式——單例模式PHP設計模式單例
- 設計模式—單例模式(轉)設計模式單例
- 常用設計模式-單例模式設計模式單例
- Java設計模式-單例模式Java設計模式單例
- 設計模式(三)----建立型模式之單例模式(一)設計模式單例
- 設計模式-單例模式,觀察者模式設計模式單例
- JavaScript設計模式初探--單例設計模式JavaScript設計模式單例
- 設計模式總結 —— 單例設計模式設計模式單例