單例模式有八種方式:
餓漢式(靜態常量)
餓漢式(靜態**塊)
懶漢式(執行緒不安全)
懶漢式(執行緒安全,同步方法)
懶漢式(執行緒安全,同步**塊)
雙重檢查
靜態內部類
列舉
//餓漢式(靜態變數)
class
singleton
//2.本類內部建立物件例項
private
final
static singleton instance =
newsingleton()
;//3. 提供乙個公有的靜態方法,返回例項物件
public
static singleton getinstance()
}
//餓漢式(靜態變數)
class
singleton
//2.本類內部建立物件例項
private
static singleton instance;
static
//3. 提供乙個公有的靜態方法,返回例項物件
public
static singleton getinstance()
}
class
singleton
//提供乙個靜態的公有方法,當使用到該方法時,才去建立 instance
//即懶漢式
public
static singleton getinstance()
return instance;
}}
// 懶漢式(執行緒安全,同步方法)
class
singleton
//提供乙個靜態的公有方法,加入同步處理的**,解決執行緒安全問題
//即懶漢式
public
static
synchronized singleton getinstance()
return instance;
}}
// 懶漢式(執行緒安全,同步方法)
class
singleton
//提供乙個靜態的公有方法,加入雙重檢查**,解決執行緒安全問題, 同時解決懶載入問題
//同時保證了效率, 推薦使用
public
static
synchronized singleton getinstance()
}}return instance;
}}
// 靜態內部類完成, 推薦使用
class
singleton
//寫乙個靜態內部類,該類中有乙個靜態屬性 singleton
private
static
class
singletoninstance
//提供乙個靜態的公有方法,直接返回singletoninstance.instance
public
static
synchronized singleton getinstance()
}
//使用列舉,可以實現單例, 推薦
enum singleton
}
設計模式 8種方式實現單例模式
1 餓漢式的兩種寫法 餓漢式的特點 在獲取單例物件之前物件就已經建立完成了。package com.juc程式設計.volatile0 public class singleeh public static singleeh getsingleeh 2.靜態 塊 private static fin...
23種設計模式之單例模式(8種寫法)
23種設計模式之單例模式 8種寫法 餓漢式 高效 沒有執行緒安全問題 簡單 jvm保證執行緒安全問題 public class merge01 public static merge01 getinstance public static void main string args 用靜態塊初始化 ...
模式 單例模式8種寫法
單例模式是最常用到的設計模式之一,熟悉設計模式的朋友對單例模式都不會陌生。一般介紹單例模式的書籍都會提到餓漢式和懶漢式這兩種實現方式。但是除了這兩種方式,本文還會介紹其他幾種實現單例的方式,讓我們來一起看看吧。單例模式是一種常用的軟體設計模式,其定義是單例物件的類只能允許乙個例項存在。許多時候整個系...