1. 程式人生 > >設計模式--單例設計模式

設計模式--單例設計模式

加載 唯一性 多個 其他 構造函數 .get 安全 ret 多線程

設計模式是對問題行之有效的解決方案,它其實是一種思想。

單例設計模式:

  解決的問題:可以保證一個類在內存中只能有一個對象。(比如多個程序使用相同的配置信息對象時,就需要保證對象的唯一性)

  如何保證唯一性: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;
 }
}

真實開發時餓漢式使用較多,因為懶漢式在用的時候如果碰見多線程問題有可能出現 對象的唯一性問題存在安全隱患。(面試時餓漢式碰見的多)

設計模式--單例設計模式