為什麼需要單例模式:
首先來明確乙個問題,那就是在某些情況下,有些物件,我們只需要乙個就可以了,
比如,一台計算機上可以連好幾個印表機,但是這個計算機上的列印程式只能有乙個,
這裡就可以通過單例模式來避免兩個列印作業同時輸出到印表機中,
即在整個的列印過程中我只有乙個列印程式的例項。
簡單說來,單例模式(也叫單件模式)的作用就是保證在整個應用程式的生命週期中,
任何乙個時刻,單例類的例項都只存在乙個(當然也可以不存在)。
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...