總結(jié):
單例設(shè)計(jì)模式:
解決的問題:保證一個(gè)類在內(nèi)存中的對(duì)象唯一性。
比如:多程序讀取一個(gè)配置文件時(shí)狸驳,建議配置文件封裝成對(duì)象预明。會(huì)方便操作其中數(shù)據(jù),又要保證多個(gè)程序讀到的是同一個(gè)配置文件對(duì)象耙箍,就需要該配置文件對(duì)象在內(nèi)存中是唯一的撰糠。
Runtime()方法就是單例設(shè)計(jì)模式進(jìn)行設(shè)計(jì)的。
保證對(duì)象唯一性:
1辩昆,不讓其他程序創(chuàng)建該類對(duì)象阅酪。
2,在本類中創(chuàng)建一個(gè)本類對(duì)象汁针。
3术辐,對(duì)外提供方法,讓其他程序獲取這個(gè)對(duì)象施无。
步驟:
1辉词,因?yàn)閯?chuàng)建對(duì)象都需要構(gòu)造函數(shù)初始化,只要將本類中的構(gòu)造函數(shù)私有化猾骡,其他程序就無法再創(chuàng)建該類對(duì)象瑞躺;
2,就在類中創(chuàng)建一個(gè)本類的對(duì)象兴想;
3幢哨,定義一個(gè)方法,返回該對(duì)象嫂便,讓其他程序可以通過方法就得到本類對(duì)象捞镰。
代碼體現(xiàn):
1,私有化構(gòu)造函數(shù);
2岸售,創(chuàng)建私有并靜態(tài)的本類對(duì)象几迄;
3,定義公有并靜態(tài)的方法冰评,返回該對(duì)象映胁。
餓漢式(還沒使用到這個(gè)對(duì)象時(shí)就已經(jīng)實(shí)例化了)
class Single{
?private Single(){} //私有化構(gòu)造函數(shù)。
private static Single s = new Single(); //創(chuàng)建私有并靜態(tài)的本類對(duì)象甲雅。
?public static Single getInstance(){ //定義公有并靜態(tài)的方法解孙,返回該對(duì)象。
?return s;
?}
};
懶漢式:延遲加載方式抛人。(使用到的時(shí)候才實(shí)例化)
class Single2{
?private Single2(){}
private static Single2 s = null;
?public static Single2 getInstance(){
?if(s==null)
?s = new Single2();
?return s;
?}
}