單例模式是指在項(xiàng)目中無論在何時(shí)、哪里創(chuàng)建的對(duì)象都是同一個(gè)實(shí)例的模式。這樣做的好處是保證全局都只有一個(gè)實(shí)例,節(jié)約系統(tǒng)內(nèi)存,避免重復(fù)的創(chuàng)建回收。而它的缺點(diǎn)就在于擴(kuò)展性不好,無法進(jìn)行繼承,而且會(huì)一直占用系統(tǒng)內(nèi)存。
在Java中,單例模式的實(shí)現(xiàn)很簡(jiǎn)單,只需要在構(gòu)造函數(shù)中加上一個(gè)訪問權(quán)限為private的構(gòu)造函數(shù)就好了,但是,當(dāng)在多線程中出現(xiàn)每個(gè)線程都要?jiǎng)?chuàng)建同一個(gè)單例對(duì)象的現(xiàn)象出現(xiàn)時(shí),這就會(huì)有很大的風(fēng)險(xiǎn)出現(xiàn)系統(tǒng)邏輯混亂。針對(duì)以上問題,可以這樣進(jìn)行操作:
public class SingletonPattern{
privite static final SingletonPattern singletonPattern = new SingletonPattern();
privite SingletonPattern(){
}
public synchronized static SingletonPattern shareInstance(){
return singletonPattern;
}
}