標籤:
·單例類
單一實例類,就是這個類只能建立一個對象,保證了對象執行個體的唯一性。
例子:單一實例類
class Singleton { private static Singleton instance; //使用static修飾,因為它要在該類的靜態方法中被訪問,作用 //是一個引用變數指向對象。 private Singleton(){}; //提供一個私人的構造器,使用方法來控制它建立對象的個數。 //方法必須是public的和static的,因為方法要公開被下面的類調用並且下面的s1引用變數擷取方法的方式是 //通過類.方法來實現的。因為不能建立對象,所以只能用類。這樣就約束了只能建立一個對象。 public static Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } } public class SingletonTest { public static void main(String[] args) { Singleton s1 = Singleton.getInstance(); Singleton s2 = Singleton.getInstance(); System.out.println(s1 == s2); //結果為true,這裡可以看出確實是同一個對象 "=="比較兩個對象的記憶體位址是否相同。 } }
//餓漢式
//class single1
//{
// private static single1 s=null;
// private single1() {}
// public static single1 getinstance()
// {
// if(s==null)
// s=new single();
// return s;
// }
//}
//懶漢式
//原則 定義單例時原則上用餓漢式
class singledemo
{
public static void main(String [] args)
{
System.out.println("Hello world");
}
}
1。為了避免其他程式多建立該類對象。先禁止其他程式建立該類對象
2。還未了讓其他程式反問改類對象。只好在本類中。自訂一個對象
3。為了方便其他程式對自訂對象的訪問。可以對外提供一些訪問方式
為了避免其他程式多建立該類對象。先禁止其他程式建立該類對象。
如果對象中建構函式可以傳入參數。建立對象。就會改變對象初始化資料。而該對象只提供功能。避免其他調用著建立對象,而改動初始資料。所以封裝對象
1、單例模式能夠保證一個類僅有唯一的執行個體,並提供一個全域訪問點。
2、單例模式主要有3個特點:
(1)、單例類確保自己只有一個執行個體。
(2)、單例類必須自己建立自己的執行個體。
(3)、單例類必須為其他對象提供唯一的執行個體。
3、對於懶漢模式,我們可以這樣理解:該單例類非常懶,只有在自身需要的時候才會行動,從來不知道及早做好準備。它在需要對象的時候,才判斷是否已有對象,如果沒有就立即建立一個對象,然後返回,如果已有對象就不再建立,立即返回。
4、對於餓漢模式,我們可以這樣理解:該單例類非常餓,迫切需要吃東西,所以它在類載入的時候就立即建立對象。
java 單例類