Java中的單例設計模式Singleton

2021-08-02 06:35:34 字數 1619 閱讀 9758

單例模式:則在這個類被建立後,只可能產生乙個例項供外部訪問,並且提供乙個全域性的訪問點。

核心的知識點:

1.private構造方法,防止通過new關鍵字,例項化出例項來。

2.再其內部產生該類的例項化物件,並用public static修飾。

3.寫乙個static方法,返回該例項物件。

一共介紹四種方式,前三種了解就可以了,隨後一種為單例模式中的最優解。

1.餓漢式singleton

//優點:寫法簡單,執行緒安全

//缺點:例項一直存在於記憶體中,會造成記憶體的浪費

public class singletontest

//餓漢式,用fianl關鍵字修飾

private static final singletontest instance = new singletontest();

public static singletontest getsingletoninstance()

}

2.飽漢式singleton

//優點:寫法簡單,某些情況下節約記憶體

//缺點:併發的環境下會出現多個singletontest2例項,非執行緒安全

public class singletontest2

//飽漢式,沒有使用final關鍵字

private static singletontest2 instance;

public static singletontest2 getsingletoninstance()

}

3.

飽漢式singleton:使用synchronize關鍵字優化了非執行緒安全的問題

//缺點:同步方法頻繁呼叫,效率低

public class singletontest3

//飽漢式,沒有使用final關鍵字

private static singletontest3 instance;

//呼叫時再初始化singletontest3,使用synchronized避免多執行緒訪問時,可能造成重的復初始化問題)

public static synchronized singletontest3 getsingletoninstance()

}

4.單例模式的最優解

//單例模式的最優方案

public class singletontest4

//飽漢式,沒有使用final關鍵字

//用volatile修飾的變數,執行緒在每次使用變數的時候,都會讀取變數修改後的最新的值

//使用volatile保證了多執行緒訪問時instance變數的可見性,避免了instance初始化時其他變數屬性還沒賦值完時,被另外執行緒呼叫

private static volatile singletontest4 instance;

public static singletontest4 getsingletoninstance()

return instance;

}

紙上得來終覺淺。。。

快樂學習,快樂程式設計!

java 中的設計模式 單例模式

單例模式 當有程式中只想保持物件的乙份例項的時候通常會使用 單例模式 1 在多執行緒中 若每乙份執行緒都儲存乙份例項 通常與threadlocal一起使用 2 若多執行緒訪問同乙份例項 則要加多執行緒訪問控制 reentrantlock 雙重檢查鎖等 public class singleinsta...

Java中的單例設計模式

何為單例設計模式 乙個類在記憶體中只允許存在乙個物件 單例設計模式要保證物件的唯一性 如何保證物件的唯一性 1 為避免其他程式過多建立該類物件,先禁止其他程式建立該類物件 2 為讓其他程式可以訪問該類物件,先在本類中建立乙個物件 3 為了方便其他程式對物件的訪問,要提供一些訪問的方式 如何實現 1 ...

Java中的單例設計模式

設計模式 解決某一類問題最行之有效的方法。單例設計模式 解決乙個類在記憶體只存在乙個物件。想要保證物件唯一。1,為了避免其他程式過多建立該類物件。先禁止其他程式建立該類物件 2,還為了讓其他程式可以訪問到該類物件,只好在本類中,自定義乙個物件。3,為了方便其他程式對自定義物件的訪問,可以對外提供一些...