<small>覺得好難得路過</small>
單例設(shè)計模式
解決問題 : 保證一個類在內(nèi)存中的對象的唯一性.
比如:多程序讀取一個配置文件時,建議配置文件封裝成對象究西。會方便操作其中數(shù)據(jù)裁僧,又要保證多個程序讀到的是同一個配置文件對象采幌,就需要該配置文件對象在內(nèi)存中是唯一的。
Runtime() 方法就是單例設(shè)計模式進(jìn)行設(shè)計的.
如何保證對象唯一性呢靠粪?
- 思想:
- 不讓其他程序創(chuàng)建該類對象蜡吧。
- 在本類中創(chuàng)建一個本類對象。
- 對外提供方法庇配,讓其他程序獲取這個對象斩跌。
- 步驟:
- 因為創(chuàng)建對象都需要構(gòu)造函數(shù)初始化,只要將本類中的構(gòu)造函數(shù)私有化捞慌,其他程序就無法再創(chuàng)建該類對象耀鸦;
- 就在類中創(chuàng)建一個本類的對象;
- 定義一個方法啸澡,返回該對象袖订,讓其他程序可以通過方法就得到本類對象。(作用:可控)
- 代碼體現(xiàn):
- 私有化構(gòu)造函數(shù)嗅虏;
- 創(chuàng)建私有并靜態(tài)的本類對象洛姑;
- 定義公有并靜態(tài)的方法,返回該對象皮服。
//餓漢式
class Single{
private Single(){} //私有化構(gòu)造函數(shù)楞艾。
private static Single s = new Single(); //創(chuàng)建私有并靜態(tài)的本類對象。
public static Single getInstance(){ //定義公有并靜態(tài)的方法龄广,返回該對象硫眯。 return s; } }
---------------------------------------------
//懶漢式:延遲加載方式。
class Single2{
private Single2(){}
private static Single2 s = null;
public static Single2 getInstance(){
if(s==null)
s = new Single2();
return s;
}
}
給個github follow me的鏈接,上面有很多初學(xué)者可供學(xué)習(xí)的資料择同,項目.
<a>https://github.com/SuperZee</a>