java基礎之單例模式

2021-08-26 18:44:34 字數 1168 閱讀 6125

為什麼需要單例模式:

首先來明確乙個問題,那就是在某些情況下,有些物件,我們只需要乙個就可以了,

比如,一台計算機上可以連好幾個印表機,但是這個計算機上的列印程式只能有乙個,

這裡就可以通過單例模式來避免兩個列印作業同時輸出到印表機中,

即在整個的列印過程中我只有乙個列印程式的例項。

簡單說來,單例模式(也叫單件模式)的作用就是保證在整個應用程式的生命週期中,

任何乙個時刻,單例類的例項都只存在乙個(當然也可以不存在)。

singleton 類(懶漢式)

namespace singleton

///

/// 定義乙個全域性訪問點

/// 設定為靜態方法

/// 則在類的外部便無需例項化就可以呼叫該方法

///

///

public static singleton getinstance()

return singleton;

} }

}測試類**:

class singletontest

else

console.readkey();

} }

從上面的結果可以看出來,儘管我兩次訪問了 getinstance(),但是我訪問的只是同乙個例項,

換句話來說,上面的**中,由於建構函式被設定為 private 了,

所以您無法再在 singleton 類的外部使用 new 來例項化乙個例項,您只能通過訪問 getinstance()來訪問 singleton 類,

getinstance()通過如下方式保證該 singleton 只存在乙個例項:

首先這個 singleton 類會在在第一次呼叫 getinstance()時建立乙個例項,並將這個例項的引用封裝在自身類中,

然後以後呼叫 getinstance()時就會判斷這個 singleton 是否存在乙個例項了,如果存在,則不會再建立例項。

而是呼叫以前生成的類的例項,這樣下來,整個應用程式中便就只存在乙個例項了。

從這裡再來總結單例模式的特點:

首先,單例模式使類在程式生命週期的任何時刻都只有乙個例項,

然後,單例的建構函式是私有的,外部程式如果想要訪問這個單例類的話,

必須通過 getinstance()來請求(注意是請求)得到這個單例類的例項。

java基礎之單例模式

單列模式 單例模式指的是乙個類只能有乙個例項,這樣的類被稱為單例類,或者單態類,即singleton class 單例類的特點 單例類只可有乙個例項 它必須自己創立這唯一的乙個例項 它必須給所有其它的類提供自己這一例項 單例模式有兩種常見的實現方式,被稱為餓漢式與懶漢式。餓漢式 載入類的時候就初始化...

JAVA基礎 設計模式之單例模式

1.單例模式 乙個類只能構建乙個物件的設計模式 2.怎麼去是實現?不允許其他程式用new建立該物件。實現方式 將建構函式私有化。建立物件要呼叫建構函式,將建構函式的訪問許可權定義為private,建立物件將無法完成。在該類中建立乙個本類例項。實現方式 在該類中new乙個本類的物件。對外提供乙個方法讓...

java基礎 單例模式

單例模式 singleton模式 乙個類有且僅有乙個例項,並且自行例項化向整個系統提供 公開 具體實現的角度來說 構造方法私有化 靜態屬性指向例項 public static的getinstance方法,返回第二部的靜態屬性 餓漢模式,無論如何都會建立乙個例項 例子取自 以lol中的大龍 giant...