設計模式是對問題行之有效的解決方案,它其實是一種思想。 單例設計模式: 解決的問題:可以保證一個類在記憶體中只能有一個對象。(比如多個程式使用相同的配置信息對象時,就需要保證對象的唯一性) 如何保證唯一性:1、不允許其他程式用new創建類對象 2、在該類中創建一個本類實例 3、對外提供一個方法讓其他程 ...
設計模式是對問題行之有效的解決方案,它其實是一種思想。
單例設計模式:
解決的問題:可以保證一個類在記憶體中只能有一個對象。(比如多個程式使用相同的配置信息對象時,就需要保證對象的唯一性)
如何保證唯一性:1、不允許其他程式用new創建類對象
2、在該類中創建一個本類實例
3、對外提供一個方法讓其他程式可以獲取該對象
達成唯一性的步驟:
1、私有化該類構造函數(private)
2、通過new在本類中創建一個本類對象
3、定義一個公有的方法,將創建的對象返回
class Single
{
static Single s = new Single();
private Single(){}
public static Single getInstance()
{
return s;
}
}
//調用對象的方式採用類名調用,類名調用的前提是調用靜態方法,靜態訪問的內容必須是靜態故static Single用靜態修飾
class SingleDemo
{
Single ss1 = Single.getInstance();
Single ss2= Single.getInstance();
System.out.println(ss1==ss2);
}
//輸出結果為true也就說明對象唯一
這種方式在類一 載入就會產生對象。也稱作惡漢式單例模式。
對應的懶漢式如下:
懶漢式即類載入進來時,沒有對象,只有調用geyInstance方式時,才會創建對象。(延遲載入形式)
class Single2
{
static Single2 s = null;
private Single2(){}
public static Single2 getInstance()
{
if ( s == null )
s = new Single2 ();
return s;
}
}
真實開發時餓漢式使用較多,因為懶漢式在用的時候如果碰見多線程問題有可能出現 對象的唯一性問題存在安全隱患。(面試時餓漢式碰見的多)