思路:
1、如果其他程式能夠隨意用new建立該類物件,那麼就無法控制個數。因此,不讓其他程式用new建立該類的物件。
2、既然不讓其他程式new該類物件,那麼該類在自己內部就要建立乙個物件,否則該類就永遠無法建立物件了。
3、該類將建立的物件對外(整個系統)提供,讓其他程式獲取並使用。
步驟:1、 將該類中的建構函式私有化。
2、在本類中建立乙個本類物件。
3、定義乙個方法,返回值型別是本類型別。讓其他程式通過該方法就可以獲取到該類物件。
第一種方法:
//餓漢式
public class single
/*** 外部通過呼叫這個函式來拿到物件
* @return single物件s
*/public static single getinstance()
}
測試**如下:
/**
* 此時若位址一樣,則拿的是同一物件
*/@test
public void t1()
測試結果如下:
singelmodel.pattern.singleton.single@50c931fc
singelmodel.pattern.singleton.single@50c931fc
第二種方法:
public class single2
public static single2 getinstance()
return s;
}
}
測試**如下:
@test
public void t2()
/*** 一起啟動執行緒
*/for (int i = 0; i < ts.length; i++)
} class usesingle2 extends thread catch (interruptedexception e)
single2 s = single2.getinstance();
system.out.println(s);
}
測試結果如下:
singelmodel.pattern.singleton.single2@2d342ba4
singelmodel.pattern.singleton.single2@2d342ba4
singelmodel.pattern.singleton.single2@2d342ba4
singelmodel.pattern.singleton.single2@2d342ba4
singelmodel.pattern.singleton.single2@2d342ba4
singelmodel.pattern.singleton.single2@2d342ba4
singelmodel.pattern.singleton.single2@2d342ba4
singelmodel.pattern.singleton.single2@2d342ba4
singelmodel.pattern.singleton.single2@2d342ba4
singelmodel.pattern.singleton.single2@2d342ba4
singelmodel.pattern.singleton.single2@2d342ba4
singelmodel.pattern.singleton.single2@2d342ba4
singelmodel.pattern.singleton.single2@488e32e7 ******
singelmodel.pattern.singleton.single2@2d342ba4
singelmodel.pattern.singleton.single2@2d342ba4
第三種方法:是借用了單例的思想,
/**
* 這裡是單例的第三種模式,可以再single3中隨便new ,
* 但是卻只能拿到a類中的同乙個物件
* @author administrator
* */
public class single3
}
public class a
public void setx(int x)
}
@test
public void t3()
結果如下:
singelmodel.pattern.singleton.a@3603820e
singelmodel.pattern.singleton.a@3603820e
singelmodel.pattern.singleton.a@3603820e
設計模式(一) 單例模式
這種模式只涉及到乙個單一的類,該類負責建立自己的物件,並確保只建立乙個物件。單例只有乙個例項 單例類必須建立自己唯一的例項 單例類必須給其他物件提供這唯一的例項 由於當今的程式設計模型都是基於多執行緒方式,因此此處只介紹執行緒安全的幾種實現。第一次被呼叫時才建立物件,屬於懶載入 lazy init ...
設計模式(一) 單例模式
單例模式 保證執行記憶體中只有乙個實體的實現模式就是單例模式,最常見的有餓漢模式 懶漢模式兩種。餓漢模式 package com.madg.design.singleton public class hungry public hungry getinstance 懶漢模式 package com....
設計模式(一) 單例模式
小結確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。確保某個類有且只有乙個物件的場景,避免產生多個物件消耗過多的資源。例如 建立乙個物件需要消耗的資源過多,比如io操作 資料庫操作等,這時就要考慮使用單例模式。public class ehansingleton public st...