Java設計模式之單例模式
設計模式:就是根據問題和需求,在大量實踐中總結和理論化之後優選的程式碼結構,程式設計風格以解決問題的方式。
單列模式:在設計一個類時,該類的例項在整個程式中只有一個例項物件。列如:世界上只有一個月亮。
1、餓漢模式:
public class SinglePattern {
/*
* 1,類的構造方法私有化,不能通過new關鍵字建立例項
* 2,類的內部建立一個該類的例項,使用靜態變數引用該物件
* 3,定義一個靜態方法返回該例項物件
* */
//私有構造方法
private SinglePattern() {}
//建立該類的例項物件
private static SinglePattern single = new SinglePattern();
//公開的靜態方法,返回該類例項
public static SinglePattern getSingleP() {
return single;
}
}
2、懶漢模式:
public class SinglePattern {
//私有構造方法
private SinglePattern() {}
//建立該類的例項物件
private static SinglePattern single = null;
//公開的靜態方法,返回該類例項
public static SinglePattern getSingleP() {
if (single == null){
single = new SinglePattern();
}
return single;
}
}
懶漢單例模式是執行緒不安全的,多執行緒情況下有可能存在多個例項,可以通過synchronized關鍵字來達到執行緒安全。
1、在getSingleP()方法上加synchronized 關鍵字
public class SinglePattern {
//私有構造方法
private SinglePattern() {}
//建立該類的例項物件
private static SinglePattern single = null;
//公開的靜態方法,返回該類例項
public static synchronized SinglePattern getSingleP() {
if (single == null){
single = new SinglePattern();
}
return single;
}
}
2、通過同步程式碼塊解決
public class SinglePattern {
//私有構造方法
private SinglePattern() {
}
//建立該類的例項物件
private static SinglePattern single = null;
//公開的靜態方法,返回該類例項
public static SinglePattern getSingleP() {
if (single == null){
synchronized (SinglePattern.class){
single = new SinglePattern();
}
}
return single;
}
}
相關文章
- 《JAVA與設計模式》之單例模式Java設計模式單例
- Java設計模式系列之單例設計模式Java設計模式單例
- 折騰Java設計模式之單例模式Java設計模式單例
- Java設計模式之單例模式(Singleton)Java設計模式單例
- Java設計模式–單例模式Java設計模式單例
- Java設計模式——單例模式Java設計模式單例
- Java設計模式--單例模式Java設計模式單例
- Java設計模式 | 單例模式Java設計模式單例
- Java設計模式【單例模式】Java設計模式單例
- Java設計模式-單例模式Java設計模式單例
- 設計模式之☞單例模式設計模式單例
- 設計模式之單例模式設計模式單例
- 設計模式之---單例模式設計模式單例
- 設計模式之單例設計模式設計模式單例
- Java設計模式之單例模式(Singleton Pattern)Java設計模式單例
- JAVA設計模式之 單例模式【Singleton Pattern】Java設計模式單例
- Java設計模式4:單例模式Java設計模式單例
- Java常用設計模式-單例模式Java設計模式單例
- PHP 設計模式之單例模式PHP設計模式單例
- Javascript 設計模式之單例模式JavaScript設計模式單例
- Javascript設計模式之單例模式JavaScript設計模式單例
- js設計模式之單例模式JS設計模式單例
- PHP 設計模式之——單例模式PHP設計模式單例
- 01 設計模式之單例模式設計模式單例
- 設計模式(一)之單例模式設計模式單例
- golang設計模式之單例模式Golang設計模式單例
- PHP設計模式之單例模式PHP設計模式單例
- php模式設計之 單例模式PHP模式單例
- PHP設計模式之:單例模式PHP設計模式單例
- iOS 設計模式之單例模式iOS設計模式單例
- Java設計模式——單例模式(建立型模式)Java設計模式單例
- java單例設計模式Java單例設計模式
- 設計模式之單例設計模式單例
- 淺識JAVA設計模式——單例設計模式Java設計模式單例
- java設計模式其一 單例模式Java設計模式單例
- java設計模式-單例模式SingletonJava設計模式單例
- 我的Java設計模式-單例模式Java設計模式單例
- 設計模式-Java實現單例模式設計模式Java單例