寰堝鏃跺欒寰楁尯鎼炵瑧鐨勶紝鍘婚潰璇曠殑鏃跺欏鏋滀漢瀹墮棶浣犺璁℃ā寮忥紝涓鑸兘鏄浣犲啓涓崟渚嬫ā寮忋傚幓騫存潵鍖椾含濂藉嚑瀹墮潰璇曢兘鏄棶鎴戣繖涓傚綋鏃舵垜灝辨兂榪欎釜鑳藉弽鏄犲嚭涓涓漢鐨勬按騫蟲潵鍚楋紵榪樻槸璇存洿澶氱殑鏄弽鏄犲嚭榪欎釜鍏徃鐨勬按騫沖憿錛?br />
闅忕潃涓騫寸殑搴旂敤錛屽緢澶氬湴鏂歸兘鐢ㄨ繃涔嬪悗瑙夊緱錛屽崟渚嬭繖涓笢瑗胯櫧鐒剁畝鍗曪紝鍙槸鐜板疄鏄鏉傜殑銆傛墍浠ュ崟渚嬭繖涓畝鍗曠殑妯″紡涔熶笉鑳藉お灝忕灖鍜?br />
鍗曚緥鍏跺疄鏈夊緢澶氱瀹炵幇錛岃繖鏄叾涓殑涓縐嶏紝寤惰繜鍔犺澆鐨勶紙濂藉儚鑻辨枃鍙獿azy錛燂級錛?br />
[涓嬮潰浠g爜涓墍鏈夌殑鏋勯犲櫒閮芥槸縐佹湁鐨勶紝榪欓噷鎴戝氨鐪佺暐涓嶅啓浜嗐俔
public class ClassName {
public static ClassName getInstance(){
if(instance == null)
{
instance = new ClassName();
}
return instance;
}
private static ClassName instance;
}
榪欑鐨勫ソ澶勬槸鎴戜滑鐨勫崟渚嬩嬌鐢ㄦ椂鎵嶈繘琛屽垵濮嬪寲錛岃繖鏍鋒柟渚挎垜浠湪緋葷粺鍚姩鏃跺仛浜涘皬鍔ㄤ綔銆備絾鏄繖涓柟寮忎笉鏄嚎紼嬪畨鍏ㄧ殑錛屾兂瑕佸畬鎴愪竴涓嚎紼嬪畨鍏ㄧ殑鍗曚緥錛屾湁鍑犵鏂瑰紡錛?br />
錛堜竴錛?br />
public class ClassName {
public static ClassName getInstance(){
return instance;
}
private static ClassName instance = new ClassName();
}
榪欑鏂瑰紡錛屽彲浠ヤ繚璇佹垜浠殑鍗曚緥鏄嚎紼嬪畨鍏ㄧ殑錛屾瘯绔熸垜浠敮涓鐨勫疄渚嬪湪緋葷粺鍒濆鍖栫殑鏃跺欏氨鏋勯犱簡銆傚彲鏄疛ava鐨勬満鍒舵槸static綰у埆鐨勫彉閲忓垵濮嬪寲鏃朵簰鐩歌皟鐢ㄦ槸浼氭姤寮傚父鐨勩傛墍浠ラ殢鐫緋葷粺鐨勬墿灞曪紝灝ゅ叾榪樹細鏈変竴浜涙柊鎵嬫垨鑰呯矖蹇冨ぇ鎰忕殑瀹朵紮錛堟瘮濡傝錛屾垜錛変細涔辯敤浣犵殑鏂規硶銆備竴涓嶅皬蹇冨氨閫犳垚闂浜嗐傝屼笖錛屼綘涔熷け鍘諱簡絎竴涓柟寮忎腑鐨勪竴涓皬浼樺娍錛屼笉鑳藉湪緋葷粺鍚姩鏃跺仛鐐瑰皬鍔ㄤ綔浜嗐?br />
錛堜簩錛?br />
public class ClassName {
public static synchronized ClassName getInstance(){
if(instance == null)
{
instance = new ClassName();
}
return instance;
}
private static ClassName instance;
}
榪欐牱鍊掓槸綰跨▼瀹夊叏浜嗭紝涔熷彲浠ュ歡榪熷姞杞斤紝浣嗘槸浠庝粖浠ュ悗榪欎釜getInstance鏂規硶灝辨槸synchronized鐨勪簡錛岄偅緇濆鏄緢褰卞搷鏁堢巼鐨勩傛垜璺熸湅鍙嬭璁烘彁鍑轟簡鍑犵鍐欐硶錛屼互鏈熸棦鑳戒嬌鍗曚緥鍙互鍦ㄧ郴緇熷惎鍔ㄤ笉鑷充簬鏁版嵁宸茬粡鐓垚鐔熼キ鍙堟槸綰跨▼瀹夊叏鐨勶細錛堝皯鏁頒漢璁ㄨ緇撴灉錛屼唬鐮佸彲鑳戒細姣旇緝涓戦檵錛屼粎渚涘弬鑰冿紝嬈㈣繋鎷嶇爾錛?br />
public class ClassName {
public static ClassName getInstance(){
if(instance == null)
{
instance = ClassName.createInstance();
}
return instance;
}
private static synchronized ClassName createInstance(){
if(instance == null)
{
return new ClassName();
}else{
return instance;
}
}
private static ClassName instance;
}
榪欑鍐欐硶灝卞緢濂界殑瑙e喅浜嗚繖浜涢棶棰樸?br />
榪樻湁涓縐嶅啓娉曟槸榪欐牱鐨勶紝榪欎釜涓嶆槸寤惰繜鍔犺澆鐨勩傝屾槸閲囩敤浜嗕竴縐嶅彇宸х殑鏂瑰紡銆?br />
public class ClassName {
public static ClassName getInstance(){
if(!instance.isInit)
{
instance.initSingleton();
}
return instance;
}
private synchronized void initSingleton() {
if(!isInit)
{
reset();//榪欏悕瀛楁槸鏈夌偣鎬紓錛屾垜娌℃椂闂存兂澶ソ鍚殑鍚嶅瓧
isInit = true;
}
}
public void reset(){
//.....鐪熸榪涜鏁版嵁鍒濆鍖栫殑鍦版柟
}
private boolean isInit = false;
private static ClassName instance = new ClassName();
}
灝嗘墍鏈夌殑鍒濆鍖栦唬鐮佹惉鍒版瀯閫犲櫒涔嬪銆傝繖鏄笓涓烘暟鎹垵濮嬪寲鍜屽浣嶈繘琛岀殑璁捐銆傛墍浠ユ垜鎶妑eset寮鏀句簡鍑烘潵銆?br />

]]>