锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
鎺ヤ笅鏉ワ紝鎴戜嬌鐢ㄤ笌log4j鐩稿搴旂殑JUnit鏉ユ祴璇曞崟渚嬬被錛屽畠浼氳瘡絀垮湪榪欑瘒鏂囩珷浣欎笅鐨勯儴鍒嗐傚鏋滀綘瀵笿Unit鎴杔og4j涓嶅緢鐔熸倝錛岃鍙傝冪浉鍏寵祫婧愩?BR>
渚?鏄竴涓敤JUnit嫻嬭瘯渚?鐨勫崟渚嬫ā寮忕殑妗堜緥錛?BR>渚?.涓涓崟渚嬫ā寮忕殑妗堜緥
渚?涓ゆ璋冪敤ClassicSingleton.getInstance()錛屽茍涓旀妸榪斿洖鐨勫紩鐢ㄥ瓨鍌ㄥ湪鎴愬憳鍙橀噺涓傛柟娉晅estUnique()浼氭鏌ヨ繖浜涘紩鐢ㄧ湅瀹冧滑鏄惁鐩稿悓銆備緥3鏄繖涓祴璇曟渚嬬殑杈撳嚭錛?BR>渚?.鏄繖涓祴璇曟渚嬬殑杈撳嚭
姝e鍓嶉潰鐨勬竻鍗曟墍紺猴紝渚?鐨勭畝鍗曟祴璇曢『鍒╅氳繃----閫氳繃ClassicSingleton.getInstance()鑾峰緱鐨勪袱涓崟渚嬬被鐨勫紩鐢ㄧ‘瀹炵浉鍚?鐒惰岋紝浣犺鐭ラ亾榪欎簺寮曠敤鏄湪鍗曠嚎紼嬩腑寰楀埌鐨勩備笅闈㈢殑閮ㄥ垎鐫閲嶄簬鐢ㄥ綰跨▼嫻嬭瘯鍗曚緥綾匯?BR>
澶氱嚎紼嬪洜绱犵殑鑰冭檻
鍦ㄤ緥1涓殑ClassicSingleton.getInstance()鏂規硶鐢變簬涓嬮潰鐨勪唬鐮佽屼笉鏄嚎紼嬪畨鍏ㄧ殑錛?BR>
濡傛灉涓涓嚎紼嬪湪絎簩琛岀殑璧嬪艱鍙ュ彂鐢熶箣鍓嶅垏鎹紝閭d箞鎴愬憳鍙橀噺instance浠嶇劧鏄痭ull錛岀劧鍚庡彟涓涓嚎紼嬪彲鑳芥帴涓嬫潵榪涘叆鍒癷f鍧椾腑銆傚湪榪欑鎯呭喌涓嬶紝涓や釜涓嶅悓鐨勫崟渚嬬被瀹炰緥灝辮鍒涘緩銆備笉騫哥殑鏄繖縐嶅亣瀹氬緢灝戝彂鐢燂紝榪欐牱榪欑鍋囧畾涔熷緢闅懼湪嫻嬭瘯鏈熼棿鍑虹幇錛堣瘧娉細鍦ㄨ繖鍙兘鏄綔鑰呭寰堝皯鍑虹幇榪欑鎯呭喌鑰屽鑷存棤娉曟祴璇曚粠鑰屼嬌浜轟滑鏀炬澗璀︽儠鑰屾劅鍒板徆鎯滐級銆備負浜嗘紨紺鴻繖涓嚎紼嬭疆鎹紝鎴戝緱閲嶆柊瀹炵幇渚?涓殑閭d釜綾匯備緥4灝辨槸淇鍚庣殑鍗曚緥綾伙細
渚?.浜轟負瀹夋帓鐨勬柟寮?/B>
闄や簡鍦ㄨ繖涓竻鍗曚腑鐨勫崟渚嬬被寮哄埗浣跨敤浜嗕竴涓綰跨▼閿欒澶勭悊錛屼緥4綾諱技浜庝緥1涓殑鍗曚緥綾匯傚湪getInstance()鏂規硶絎竴嬈¤璋冪敤鏃訛紝璋冪敤榪欎釜鏂規硶鐨勭嚎紼嬩細浼戠湢50姣浠ヤ究鍙﹀鐨勭嚎紼嬩篃鏈夋椂闂磋皟鐢╣etInstance()騫跺垱寤轟竴涓柊鐨勫崟渚嬬被瀹炰緥銆傚綋浼戠湢鐨勭嚎紼嬭閱掓椂錛屽畠涔熶細鍒涘緩涓涓柊鐨勫崟渚嬬被瀹炰緥錛岃繖鏍鋒垜浠氨鏈変袱涓崟渚嬬被瀹炰緥銆傚敖綆′緥4鏄漢涓哄姝ょ殑錛屼絾瀹冨嵈妯℃嫙浜嗙涓涓嚎紼嬭皟鐢ㄤ簡getInstance()騫跺湪娌℃湁瀹屾垚鏃惰鍒囨崲鐨勭湡瀹炴儏褰€?BR>渚?嫻嬭瘯浜嗕緥4鐨勫崟渚嬬被錛?BR>渚?.澶辮觸鐨勬祴璇?/B>
渚?鐨勬祴璇曟渚嬪垱寤轟袱涓嚎紼嬶紝鐒跺悗鍚勮嚜鍚姩錛岀瓑寰呭畬鎴愩傝繖涓渚嬩繚鎸佷簡涓涓鍗曚緥綾葷殑闈欐佸紩鐢紝姣忎釜綰跨▼閮戒細璋冪敤Singleton.getInstance()銆傚鏋滆繖涓潤鎬佹垚鍛樺彉閲忔病鏈夎璁劇疆錛岄偅涔堢涓涓嚎紼嬪氨浼氬皢瀹冭涓洪氳繃璋冪敤getInstance()鑰屽緱鍒扮殑寮曠敤錛岀劧鍚庤繖涓潤鎬佸彉閲忎細涓庝竴涓眬閮ㄥ彉閲忔瘮杈冩槸鍚︾浉絳夈?BR>鍦ㄨ繖涓祴璇曟渚嬭繍琛屾椂浼氬彂鐢熶竴緋誨垪鐨勪簨鎯咃細絎竴涓嚎紼嬭皟鐢╣etInstance()錛岃繘鍏f鍧楋紝鐒跺悗浼戠湢;鎺ョ潃錛岀浜屼釜綰跨▼涔熻皟鐢╣etInstance()騫朵笖鍒涘緩浜嗕竴涓崟渚嬬被鐨勫疄渚嬨傜浜屼釜綰跨▼浼氳緗繖涓潤鎬佹垚鍛樺彉閲忎負瀹冩墍鍒涘緩鐨勫紩鐢ㄣ傜浜屼釜綰跨▼媯鏌ヨ繖涓潤鎬佹垚鍛樺彉閲忎笌涓涓眬閮ㄥ浠界殑鐩哥瓑鎬с傜劧鍚庢祴璇曢氳繃銆傚綋絎竴涓嚎紼嬭閱掓椂錛屽畠涔熶細鍒涘緩涓涓崟渚嬬被鐨勫疄渚嬶紝騫朵笖瀹冧笉浼氳緗偅涓潤鎬佹垚鍛樺彉閲忥紙鍥犱負絎簩涓嚎紼嬪凡緇忚緗繃浜嗭級錛屾墍浠ラ偅涓潤鎬佸彉閲忎笌閭d釜灞閮ㄥ彉閲忚劚紱誨悓姝ワ紝鐩哥瓑鎬ф祴璇曞嵆鍛婂け璐ャ備緥6鍒楀嚭浜嗕緥5鐨勮緭鍑猴細
渚?.渚?鐨勮緭鍑?/B>
鍒扮幇鍦ㄤ負姝㈡垜浠凡緇忕煡閬撲緥4涓嶆槸綰跨▼瀹夊叏鐨勶紝閭e氨璁╂垜浠湅鐪嬪浣曚慨姝e畠銆?BR>
鍚屾
瑕佷嬌渚?鐨勫崟渚嬬被涓虹嚎紼嬪畨鍏ㄧ殑寰堝鏄?---鍙鍍忎笅闈竴涓悓姝ュ寲getInstance()鏂規硶錛?BR>
鍦ㄥ悓姝ュ寲getInstance()鏂規硶鍚庯紝鎴戜滑灝卞彲浠ュ緱鍒頒緥5鐨勬祴璇曟渚嬭繑鍥炵殑涓嬮潰鐨勭粨鏋滐細
榪欐錛岃繖涓祴璇曟渚嬪伐浣滄甯革紝騫朵笖澶氱嚎紼嬬殑鐑︽伡涔熻瑙e喅;鐒惰岋紝鏈烘晱鐨勮鑰呭彲鑳戒細璁よ瘑鍒癵etInstance()鏂規硶鍙渶瑕佸湪絎竴嬈¤璋冪敤鏃跺悓姝ャ傚洜涓哄悓姝ョ殑鎬ц兘寮閿寰堟槀璐碉紙鍚屾鏂規硶姣旈潪鍚屾鏂規硶鑳介檷浣庡埌100嬈″乏鍙籌級錛屾垨璁告垜浠彲浠ュ紩鍏ヤ竴縐嶆ц兘鏀硅繘鏂規硶錛屽畠鍙悓姝ュ崟渚嬬被鐨刧etInstance()鏂規硶涓殑璧嬪艱鍙ャ?BR>
涓縐嶆ц兘鏀硅繘鐨勬柟娉?/H3>
瀵繪壘涓縐嶆ц兘鏀硅繘鏂規硶鏃訛紝浣犲彲鑳戒細閫夋嫨鍍忎笅闈㈣繖鏍烽噸鍐檊etInstance()鏂規硶錛?BR>
榪欎釜浠g爜鐗囨鍙悓姝ヤ簡鍏抽敭鐨勪唬鐮侊紝鑰屼笉鏄悓姝ユ暣涓柟娉曘傜劧鑰岃繖孌典唬鐮佸嵈涓嶆槸綰跨▼瀹夊叏鐨勩傝冭檻涓涓嬩笅闈㈢殑鍋囧畾錛氱嚎紼?榪涘叆鍚屾鍧楋紝騫朵笖鍦ㄥ畠緇檚ingleton鎴愬憳鍙橀噺璧嬪間箣鍓嶇嚎紼?琚垏鎹€傛帴鐫鍙︿竴涓嚎紼嬭繘鍏f鍧椼傜浜屼釜綰跨▼灝嗙瓑寰呯洿鍒扮涓涓嚎紼嬪畬鎴愶紝騫朵笖浠嶇劧浼氬緱鍒頒袱涓笉鍚岀殑鍗曚緥綾誨疄渚嬨傛湁淇榪欎釜闂鐨勬柟娉曞悧錛熻璇諱笅鍘匯?BR>
鍙岄噸鍔犻攣媯鏌?/H3>
鍒濈湅涓婂幓錛屽弻閲嶅姞閿佹鏌ヤ技涔庢槸涓縐嶄嬌鎳掓眽寮忓疄渚嬪寲涓虹嚎紼嬪畨鍏ㄧ殑鎶鏈備笅闈㈢殑浠g爜鐗囨灞曠ず浜嗚繖縐嶆妧鏈細
濡傛灉涓や釜綰跨▼鍚屾椂璁塊棶getInstance()鏂規硶浼氬彂鐢熶粈涔堬紵鎯沖儚涓涓嬬嚎紼?榪涜鍚屾鍧楅┈涓婂張琚垏鎹€傛帴鐫錛岀浜屼釜綰跨▼榪涘叆if 鍧椼傚綋綰跨▼1閫鍑哄悓姝ュ潡鏃訛紝綰跨▼2浼氶噸鏂版鏌ョ湅鏄惁singleton瀹炰緥浠嶇劧涓簄ull銆傚洜涓虹嚎紼?璁劇疆浜唖ingleton鎴愬憳鍙橀噺錛屾墍浠ョ嚎紼?鐨勭浜屾媯鏌ヤ細澶辮觸錛岀浜屼釜鍗曚緥綾誨疄渚嬩篃灝變笉浼氳鍒涘緩銆備技涔庡氨鏄姝ゃ?BR>涓嶅垢鐨勬槸錛屽弻閲嶅姞閿佹鏌ヤ笉浼氫繚璇佹甯稿伐浣滐紝鍥犱負緙栬瘧鍣ㄤ細鍦⊿ingleton鐨勬瀯閫犳柟娉曡璋冪敤涔嬪墠闅忔剰緇檚ingleton璧嬩竴涓箋傚鏋滃湪singleton寮曠敤琚祴鍊間箣鍚庤岃鍒濆鍖栦箣鍓嶇嚎紼?琚垏鎹紝綰跨▼2灝變細琚繑鍥炰竴涓鏈垵濮嬪寲鐨勫崟渚嬬被瀹炰緥鐨勫紩鐢ㄣ?BR>
涓涓敼榪涚殑綰跨▼瀹夊叏鐨勫崟渚嬫ā寮忓疄鐜?/H3>
渚?鍒楀嚭浜嗕竴涓畝鍗曘佸揩閫熻屽張鏄嚎紼嬪畨鍏ㄧ殑鍗曚緥妯″紡瀹炵幇錛?BR>渚?.涓涓畝鍗曠殑鍗曚緥綾?/B>
榪欐浠g爜鏄嚎紼嬪畨鍏ㄧ殑鏄洜涓洪潤鎬佹垚鍛樺彉閲忎竴瀹氫細鍦ㄧ被琚涓嬈¤闂椂琚垱寤恒備綘寰楀埌浜嗕竴涓嚜鍔ㄤ嬌鐢ㄤ簡鎳掓眽寮忓疄渚嬪寲鐨勭嚎紼嬪畨鍏ㄧ殑瀹炵幇;浣犲簲璇ヨ繖鏍蜂嬌鐢ㄥ畠錛?BR>
褰撶劧涓囦簨騫朵笉瀹岀編錛屽墠闈㈢殑Singleton鍙槸涓涓姌琛風殑鏂規;濡傛灉浣犱嬌鐢ㄩ偅涓疄鐜幫紝浣犲氨鏃犳硶鏀瑰彉瀹冧互渚垮悗鏉ヤ綘鍙兘鎯寵鍏佽澶氫釜鍗曚緥綾葷殑瀹炰緥銆傜敤涓縐嶆洿鎶樺搥鐨勫崟渚嬫ā寮忓疄鐜?閫氳繃涓涓猤etInstance()鏂規硶鑾峰緱瀹炰緥)浣犲彲浠ユ敼鍙樿繖涓柟娉曚互渚胯繑鍥炰竴涓敮涓鐨勫疄渚嬫垨鑰呮槸鏁扮櫨涓疄渚嬩腑鐨勪竴涓紟浣犱笉鑳界敤涓涓叕寮涓旀槸闈欐佺殑錛坧ublic static)鎴愬憳鍙橀噺榪欐牱鍋氾紟
浣犲彲浠ュ畨鍏ㄧ殑浣跨敤渚嬶紬鐨勫崟渚嬫ā寮忓疄鐜版垨鑰呮槸渚嬶紤鐨勫甫涓涓悓姝ョ殑getInstance()鏂規硶鐨勫疄鐜幫紟鐒惰岋紝鎴戜滑蹇呴』瑕佺爺絀跺彟涓涓棶棰橈細浣犲繀欏誨湪緙栬瘧鏈熸寚瀹氳繖涓崟渚嬬被錛岃繖鏍峰氨涓嶆槸寰堢伒媧伙紟涓涓崟渚嬬被鐨勬敞鍐岃〃浼氳鎴戜滑鍦ㄨ繍琛屾湡鎸囧畾涓涓崟渚嬬被錛?BR>
]]>
鍗曚緥妯″紡鏄渶綆鍗曠殑璁捐妯″紡涔嬩竴錛屼絾鏄浜嶫ava鐨勫紑鍙戣呮潵璇達紝瀹冨嵈鏈夊緢澶氱己闄楓傚湪鏈湀鐨勪笓鏍忎腑錛孌avid Geary鎺㈣浜嗗崟渚嬫ā寮忎互鍙婂湪闈㈠澶氱嚎紼嬶紙multithreading)銆佺被瑁呰澆鍣紙classloaders錛夊拰搴忓垪鍖?serialization)鏃跺浣曞鐞嗚繖浜涚己闄楓?/U>
鍗曚緥妯″紡閫傚悎浜庝竴涓被鍙湁涓涓疄渚嬬殑鎯呭喌錛屾瘮濡傜獥鍙g鐞嗗櫒錛屾墦鍗扮紦鍐叉睜鍜屾枃浠剁郴緇燂紝瀹冧滑閮芥槸鍘熷瀷鐨勪緥瀛愩傚吀鍨嬬殑鎯呭喌鏄紝閭d簺瀵硅薄鐨勭被鍨嬭閬嶅強涓涓蔣浠剁郴緇熺殑涓嶅悓瀵硅薄璁塊棶錛屽洜姝ら渶瑕佷竴涓叏灞鐨勮闂寚閽堬紝榪欎究鏄紬鎵鍛ㄧ煡鐨勫崟渚嬫ā寮忕殑搴旂敤銆傚綋鐒惰繖鍙湁鍦ㄤ綘紜俊浣犱笉鍐嶉渶瑕佷換浣曞浜庝竴涓殑瀹炰緥鐨勬儏鍐典笅銆?BR>鍗曚緥妯″紡鐨勭敤鎰忓湪浜庡墠涓孌典腑鎵鍏沖績鐨勩傞氳繃鍗曚緥妯″紡浣犲彲浠ワ細
灝界鍗曚緥璁捐妯″紡濡傚湪涓嬮潰鐨勫浘涓殑鎵鏄劇ず鐨勪竴鏍鋒槸鏈綆鍗曠殑璁捐妯″紡錛屼絾瀵逛簬綺楀績鐨凧ava寮鍙戣呮潵璇村嵈鍛堢幇鍑鴻澶氱己闄楓傝繖綃囨枃绔犺璁轟簡鍗曚緥妯″紡騫舵彮紺轟簡閭d簺緙洪櫡銆?BR>娉ㄦ剰錛氫綘鍙互浠?A class=l2 target=_blank>Resources涓嬭澆榪欑瘒鏂囩珷鐨勬簮浠g爜銆?BR>
鍗曚緥妯″紡
鍦ㄣ婅璁℃ā寮忋嬩竴涔︿腑錛屼綔鑰呰繖鏍鋒潵鍙欒堪鍗曚緥妯″紡鐨勶細紜繚涓涓被鍙湁涓涓疄渚嬪茍鎻愪緵涓涓瀹冪殑鍏ㄥ眬璁塊棶鎸囬拡銆?BR>涓嬪浘璇存槑浜嗗崟渚嬫ā寮忕殑綾誨浘銆?BR>錛堝浘1錛?BR>
鍗曚緥妯″紡鐨勭被鍥?/B>
姝e浣犲湪涓婂浘涓墍鐪嬪埌鐨勶紝榪欎笉鏄崟渚嬫ā寮忕殑瀹屾暣閮ㄥ垎銆傛鍥句腑鍗曚緥綾諱繚鎸佷簡涓涓鍞竴鐨勫崟渚嬪疄渚嬬殑闈欐佸紩鐢紝騫朵笖浼氫粠闈欐乬etInstance()鏂規硶涓繑鍥炲閭d釜瀹炰緥鐨勫紩鐢ㄣ?BR>渚?鏄劇ず浜嗕竴涓粡鍏哥殑鍗曚緥妯″紡鐨勫疄鐜般?BR>渚?.緇忓吀鐨勫崟渚嬫ā寮?BR>
鍦ㄤ緥1涓殑鍗曚緥妯″紡鐨勫疄鐜板緢瀹規槗鐞嗚В銆侰lassicSingleton綾諱繚鎸佷簡涓涓鍗曠嫭鐨勫崟渚嬪疄渚嬬殑闈欐佸紩鐢紝騫朵笖浠庨潤鎬佹柟娉昰etInstance()涓繑鍥為偅涓紩鐢ㄣ?BR>鍏充簬ClassicSingleton綾伙紝鏈夊嚑涓鎴戜滑鎰熷叴瓚g殑鍦版柟銆傞鍏堬紝ClassicSingleton浣跨敤浜嗕竴涓紬鎵鍛ㄧ煡鐨勬噿姹夊紡瀹炰緥鍖栧幓鍒涘緩閭d釜鍗曚緥綾葷殑寮曠敤;緇撴灉錛岃繖涓崟渚嬬被鐨勫疄渚嬬洿鍒癵etInstance()鏂規硶琚涓嬈¤皟鐢ㄦ椂鎵嶈鍒涘緩銆傝繖縐嶆妧宸у彲浠ョ‘淇濆崟渚嬬被鐨勫疄渚嬪彧鏈夊湪闇瑕佹椂鎵嶈寤虹珛鍑烘潵銆傚叾嬈★紝娉ㄦ剰ClassicSingleton瀹炵幇浜嗕竴涓猵rotected鐨勬瀯閫犳柟娉曪紝榪欐牱瀹㈡埛绔笉鑳界洿鎺ュ疄渚嬪寲涓涓狢lassicSingleton綾葷殑瀹炰緥銆傜劧鑰岋紝浣犱細鎯婂鐨勫彂鐜頒笅闈㈢殑浠g爜瀹屽叏鍚堟硶錛?BR>
鍓嶉潰榪欎釜浠g爜鐗囨涓轟綍鑳藉湪娌℃湁緇ф壙ClassicSingleton騫朵笖ClassicSingleton綾葷殑鏋勯犳柟娉曟槸protected鐨勬儏鍐典笅鍒涘緩鍏跺疄渚嬶紵絳旀鏄痯rotected鐨勬瀯閫犳柟娉曞彲浠ヨ鍏跺瓙綾諱互鍙婂湪鍚屼竴涓寘涓殑鍏跺畠綾昏皟鐢ㄣ傚洜涓篊lassicSingleton鍜孲ingletonInstantiator浣嶄簬鐩稿悓鐨勫寘錛堢己鐪佺殑鍖咃級錛屾墍浠ingletonInstantiator鏂規硶鑳藉垱寤篊lasicSingleton鐨勫疄渚嬨?BR>榪欑鎯呭喌涓嬫湁涓ょ瑙e喅鏂規錛氫竴鏄綘鍙互浣緾lassicSingleton鐨勬瀯閫犳柟娉曞彉鍖栫鏈夌殑錛坧rivate錛夎繖鏍峰彧鏈塁lassicSingleton鐨勬柟娉曡兘璋冪敤瀹?鐒惰岃繖涔熸剰鍛崇潃ClassicSingleton涓嶈兘鏈夊瓙綾匯傛湁鏃惰繖鏄竴縐嶅緢鍚堟剰鐨勮В鍐蟲柟娉曪紝濡傛灉紜疄濡傛錛岄偅澹版槑浣犵殑鍗曚緥綾諱負final鏄竴涓ソ涓繪剰錛岃繖鏍鋒剰鍥炬槑紜紝騫朵笖璁╃紪璇戝櫒鍘諱嬌鐢ㄤ竴浜涙ц兘浼樺寲閫夐」銆傚彟涓縐嶈В鍐蟲柟娉曟槸鎶婁綘鐨勫崟渚嬬被鏀懼埌涓涓鍦ㄧ殑鍖呬腑錛屼互渚垮湪鍏跺畠鍖呬腑鐨勭被錛堝寘鎷己鐪佺殑鍖咃級鏃犳硶瀹炰緥鍖栦竴涓崟渚嬬被銆?BR>鍏充簬ClassicSingleton鐨勭涓夌偣鎰熷叴瓚g殑鍦版柟鏄紝濡傛灉鍗曚緥鐢變笉鍚岀殑綾昏杞藉櫒瑁呭叆錛岄偅渚挎湁鍙兘瀛樺湪澶氫釜鍗曚緥綾葷殑瀹炰緥銆傚亣瀹氫笉鏄繙绔瓨鍙栵紝渚嬪涓浜泂ervlet瀹瑰櫒瀵規瘡涓猻ervlet浣跨敤瀹屽叏涓嶅悓鐨勭被瑁呰澆鍣紝榪欐牱鐨勮瘽濡傛灉鏈変袱涓猻ervlet璁塊棶涓涓崟渚嬬被錛屽畠浠氨閮戒細鏈夊悇鑷殑瀹炰緥銆?BR>絎洓鐐癸紝濡傛灉ClasicSingleton瀹炵幇浜唈ava.io.Serializable鎺ュ彛錛岄偅涔堣繖涓被鐨勫疄渚嬪氨鍙兘琚簭鍒楀寲鍜屽鍘熴備笉綆℃庢牱錛屽鏋滀綘搴忓垪鍖栦竴涓崟渚嬬被鐨勫璞★紝鎺ヤ笅鏉ュ鍘熷涓偅涓璞★紝閭d綘灝變細鏈夊涓崟渚嬬被鐨勫疄渚嬨?BR>鏈鍚庝篃璁告槸鏈閲嶈鐨勪竴鐐癸紝灝辨槸渚?涓殑ClassicSingleton綾諱笉鏄嚎紼嬪畨鍏ㄧ殑銆傚鏋滀袱涓嚎紼嬶紝鎴戜滑縐板畠浠負綰跨▼1鍜岀嚎紼?錛屽湪鍚屼竴鏃墮棿璋冪敤ClassicSingleton.getInstance()鏂規硶錛屽鏋滅嚎紼?鍏堣繘鍏f鍧楋紝鐒跺悗綰跨▼2榪涜鎺у埗錛岄偅涔堝氨浼氭湁ClassicSingleton鐨勪袱涓殑瀹炰緥琚垱寤恒?BR>
姝e浣犱粠鍓嶉潰鐨勮璁轟腑鎵鐪嬪埌鐨勶紝灝界鍗曚緥妯″紡鏄渶綆鍗曠殑璁捐妯″紡涔嬩竴錛屽湪Java涓疄鐜板畠涔熸槸鍐抽潪鎯寵薄鐨勯偅涔堢畝鍗曘傝繖綃囨枃绔犳帴涓嬫潵浼氭彮紺篔ava瑙勮寖瀵瑰崟渚嬫ā寮忚繘琛岀殑鑰冭檻錛屼絾鏄鍏堣鎴戜滑榪戞按妤煎彴鐨勭湅鐪嬩綘濡備綍鎵嶈兘嫻嬭瘯浣犵殑鍗曚緥綾匯?BR>
鏈畬寰呯畫銆?
]]>
FACTORY?浜烘墠甯傚満錛氫互寰鏄鍝釜浜烘墠錛屽氨鎵懼摢涓漢鎵嶏紝鏁堢巼浣庯紝鐜板湪鏈変簡浜烘墠甯傚満錛屾垜浠彧闇
鐩存帴鍘諱漢鎵嶅競鍦烘寫涓涓ソ浜嗭紱
BUILDER?鐢熶駭嫻佹按綰匡細浠ュ墠鏄墜宸ヤ笟浣滃潑寮忕殑浜哄伐鍗曚釜鍗曚釜鐨勭敓浜ч浂浠剁劧鍚庝竴姝ヤ竴姝ョ粍瑁呭仛錛屽ソ
姣旀湁浜嗗伐涓氶潻鍛斤紝鐜板湪閮界敱鐢熶駭嫻佹按綰夸唬鏇夸簡銆傚瑕侀犱赴鐢版苯杞︼紝鍏堝埗瀹氭苯杞︾殑鏋勯犲鐢辮濺鑳庛佹柟
鍚戠洏銆佸彂鍔ㄦ満緇勬垚銆傚啀浠ユ鏋勯犳爣鍑嗙敓浜т赴鐢版苯杞︾殑杞﹁儙銆佹柟鍚戠洏銆佸彂鍔ㄦ満銆傜劧鍚庤繘琛岀粍瑁呫傛渶鍚?BR>寰楀埌涓扮敯姹借濺錛?BR>
PROTOTYPE?鍗板埛鏈殑鍙戞槑錛氫互鍓嶅彧鑳戒復璐存墠鑳戒繚鎸佸拰鍒漢鐨勫瓧榪瑰熀鏈浉鍚岋紝鐩翠粠鍗板埛鎶鏈彂鏄庯紝
浠庤屼繚璇佷簡澶嶅埗寰楀拰鍘熺墿涓妯′竴鏍鳳紱
SINGLETON?鍞竴錛氫互鍓嶆槸鍟嗘爣婊″ぉ椋烇紝鐩稿悓鐨勫晢鏍囬毦鍏嶉犳垚渚墊潈錛岀洿浠庢湁鍟嗘爣淇濇姢娉曞悗錛屽氨淇濊瘉
浜嗕笉浼氬啀浜х敓絎浼佷笟浣跨敤鐩稿悓鐨勫晢鏍囷紱
緇撴瀯鍨嬫ā寮?BR>
ADAPTER?闆嗕紬浜轟箣縐侊紝鎴愪竴宸變箣鍏細姝﹀綋媧懼紶涓変赴浼氬お鏋佹嫵錛屽皯鏋楁淳鏅虹┖澶у笀浼氶噾鍒氳埇鑻ユ帉錛屽
鏋滀粬浠袱涓兘鎴愪負鎴戠殑甯堝倕錛屾垜灝辨棦浼氬お鏋佹嫵錛屽張浼氶噾鍒氳埇鑻ユ帉浜嗭紱
DECORATOR?闈掑嚭浜庤摑鑰岃儨浜庤摑錛氭褰撴淳寮犱笁涓頒細澶瀬鎷籌紝鏄垜甯堝倕錛屼粬鏁欎細浜嗘垜澶瀬鎷籌紝浣嗘垜鑷?BR>宸辮繕浼氱偣钂欏彜寮忔憯浜わ紝寮犱笁涓板嵈涓嶄細銆備簬鏄垜灝辨垚浜咲ECORATOR妯″紡鐨勫疄鐜幫紱
BRIDGE?鐧介┈闈為┈錛氶┈涔嬮鑹叉湁榛戠櫧錛岄┈涔嬫у埆鏈夊叕姣嶃傛垜浠鈥濊繖鏄┈鈥濆お鎶借薄錛岃鈥濊繖鏄粦鑹?BR>鐨勫叕椹濆張澶鏉匡紝鍙湁灝嗛鑹蹭笌鎬у埆鍜岄┈鍔ㄦ佺粍鍚堬紝鈥濊繖鏄紙榛戣壊鐨勬垨鐧借壊鐨勶級錛堝叕鎴栨瘝錛夐┈鈥?BR>鎵嶆樉寰楃伒媧昏岄閫革紝濡傛bridge妯″紡綺鵑珦寰楃煟銆?BR>
COMPOSITE?澶у鏃忥細瀛愬張鐢熷瓩錛屽瓩鍙堢敓瀛愶紝瀛愬瓙瀛欏瓩錛屾棤絀峰敖涔燂紝灝嗕紬澶氱悍鏉傜殑浜哄彛緇勭粐鎴愪竴涓?BR>鎸夎緢鍒嗘帓鍒楃殑澶у鏃忓嵆鏄妯″紡鐨勫疄鐜幫紱
FACADE?姹傚悓瀛樺紓錛氶珮涓瘯涓氶渶璇誨垵涓拰楂樹腑錛屽崥澹篃闇璇誨垵涓拰楂樹腑錛屽洜姝ゅ浗瀹跺皢鍒濅腑鍜岄珮涓櫘
鍙婃垚涔濆勾鍒朵箟鍔℃暀鑲詫紱
FLYWEIGHT?涓鍔蟲案閫革細璁よ瘑涓夊崈姹夊瓧錛屽彲浠ュ簲浠樻棩甯歌涔︿笌鍐欏瓧錛屽彲瑙佸ご鑴戜腑瀛樺湪榪欎釜姹夊瓧搴撶殑
閲嶈錛?BR>
PROXY?鍨傚笜鍚斂錛氱姽濡傛竻鏈濆悍鐔欏勾闂寸殑鍥涘ぇ搴滆嚕錛屽緢澶氭潈鍒╀笉鍦ㄧ殗甯濇墜閲岋紝蹇呴』閫氳繃杈呬綈澶ц嚕鍘?BR>鍔烇紱
琛屼負妯″紡
CHAIN OF RESPONSIBLEITY?縐熸埧錛氫互鍓嶄負浜嗘壘鎴垮埌澶勬墦鍚紝鏁堢巼浣庝笖鎵句笉鍒板ソ鐨勬埧婧愩傜幇鍦ㄦ湁浜?BR>鎴垮眿涓粙錛屼簬鏄悜鎴垮眿涓粙鎻愬嚭縐熸埧璇鋒眰錛屼腑浠嬫彁渚涗竴涓悎閫傜殑鎴挎簮錛屾弧鎰忓垯涓嶅啀璇鋒眰錛屼笉婊℃剰
緇х畫鐪嬫埧錛岀洿鍒版弧鎰忎負姝紱
COMMAND?鍊熷垁鏉浜猴細浠ュ墠鏄兂鏉璋佸氨鏉錛屼絾涓孌墊椂闂村悗棰嗘偀鍒幫紝闀挎浠ュ線蹇呭皢緇撲粐澶錛屼簬鏄亣
鎵嬩粬浜猴紝鎸戞嫧浠栦漢涔嬮棿鐨勫叧緋諱粠鑰岃揪鍒拌嚜宸辯殑鐩殑錛?BR>
INTERPRETER?鏂囪█鏂囨敞閲婏細涓孌墊枃璦鏂囷紝灝嗗畠緲昏瘧鎴愮櫧璇濇枃錛?BR>
ITERATOR?璧跺敖鏉緇濓細涓涓竴涓殑鎼滅儲錛岀粷涓嶆斁鎺変竴涓紱
MEDIATOR?涓夎鍊猴細鏈潵鍗冨ご涓囩華鐨勫哄姟鍏崇郴錛屽拷鍑烘潵涓涓粙錛屽寘鎻藉叾涓鍒囷紝浜庢槸涓夎鍏崇郴鍙樻垚浜?BR>鐙珛鐨勪笁鏂規壘絎洓鏂逛腑浠嬬殑鍏崇郴錛?BR>
MEMENTO?鏈夌鍚屼韓錛氭垜鏈夊灝戯紝浣犲氨鏈夊灝戯紱
OBSERVER?鐪嬪畧鑰咃細涓鏃﹁鐪嬪畧鑰呮湁浠涔堝紓甯告儏鍐碉紝瀹氫細鍙婃椂鍋氬嚭鍙嶅簲錛?BR>
STATE?榪涘嚭鑷敱錛氬涓鎵囬棬錛岃兘榪涜兘鍑猴紝濡傛灉鏈夊緢澶氫漢闅忔椂榪涜繘鍑哄嚭蹇呭畾鏄懼緱鏉備貢鑰屽畨鍏紝濡備粖
璁句竴淇濆畨闄愬埗鍏惰繘鍑猴紝濡傛鍚勪漢榪涘嚭鎵嶆樉寰楄鑼冿紱
STRATEGY?涔呯梾鎴愯壇鍖伙細濡備漢鐢熺梾鍙互鏈夊悇縐嶇棁鐘訛紝浣嗙粡榪囬暱鏈熸懜绱紝灝卞彲浠ユ葷粨鍑烘劅鍐掋佽偤鐥呫?BR>鑲濈値絳夊嚑縐嶏紱
TEMPLATE METHOD??鐞嗚涓嶄竴瀹氳瀹炶返錛氭暀緇冪殑瀛︾敓浼氭父娉沖氨琛屼簡錛岃嚦浜庢暀緇冧細涓嶄細鍒欐棤鍏崇揣瑕侊紱
VISITOR?渚濇硶娌葷姜錛氬洜寮犱笁鏉浜鴻琚姝伙紝鏉庡洓鍋風獌瑕佽緗氭銆傜敱姝ゅ娍蹇呭埗瀹氬緗氬埗搴︼紝鏁呭埗瀹?BR>娉曞緥鍐欐槑鏉浜恒佹斁鐏佸伔紿冪瓑緗鍙椾粈涔堝緗氾紝緇忛氳繃鍚庨』鍙樺姩瑕佸皬銆備粖鍚庢湁浜虹姱緗笉綆℃槸璋侊紝鎸?BR>鍏辨潯渚嬪緗氬嵆鏄紝榪欏氨鏄闂呮ā寮忚癁鐢熺殑鍏ㄨ繃紼嬶紱
]]>
璁捐妯″紡鍜岃璁″師鍒欐槸瀵歸潰鍚戝璞$▼搴忚璁$殑涓涓叿浣撳簲鐢紝涓烘鎴戜滑棣栧厛闇瑕佸洖欏懼拰鎬葷粨涓涓嬮潰鍚戝璞$▼搴忚璁$殑涓浜涘熀鏈唴瀹癸紝鍚屾椂涔熸槸涓轟簡寮曞嚭璁捐妯″紡鍜岃璁″師鍒欍?/SPAN>
1銆佸瓙綾葷戶鎵挎墍鏈夌埗綾葷殑灞炴у拰鏂規硶鍚楋紵浠涔堟槸闅愯棌錛熶粈涔堟槸瑕嗙洊錛?/STRONG>
瑙i噴涓錛?/SPAN>瀛愮被鏄戶鎵夸簡鐖剁被鐨勬墍鏈夊睘鎬у拰鏂規硶錛屼絾鏄茍涓嶄竴瀹氶兘鍙錛屽彲璁や負鏄棿鎺ュ彲瑙併?/SPAN>鎵璋撶戶鎵垮氨鏄寚浣犳湁鐨勬垜鍏ㄦ湁錛屽嵆鐖剁被鏈夌殑瀛愮被鍏ㄩ兘鏈夈?/SPAN>
涓嬮潰涓涓棶棰樼粰鍑轟簡瀛愮被鏄惁鍙鐨勪竴涓爣鍑嗐?/SPAN>
浣滅敤鍩?/SPAN>public,private,protected,浠ュ強涓嶅啓鏃剁殑鍖哄埆錛?/SPAN>涓嶅啓鏃墮粯璁や負friendly錛?/SPAN>
絳旓細鍖哄埆濡備笅錛?/SPAN>
浣滅敤鍩?/SPAN> |
褰撳墠綾?/SPAN> |
鍚屼竴package |
瀛愬瓩綾?/SPAN> |
鍏朵粬package |
Public |
鈭?/SPAN> |
鈭?/SPAN> |
鈭?/SPAN> |
鈭?/SPAN> |
Protected |
鈭?/SPAN> |
鈭?/SPAN> |
鈭?/SPAN> |
脳 |
Friendly |
鈭?/SPAN> |
鈭?/SPAN> |
脳 |
脳 |
Private |
鈭?/SPAN> |
脳 |
脳 |
脳 |
濡備笅鍥劇粰鍑虹埗綾誨拰瀛愮被鐨勭戶鎵垮叧緋伙紝緇胯壊閮ㄥ垎涓虹埗綾伙紙鍏朵腑鍖呮嫭涓ら儴鍒嗭紝鍗沖瀛愮被涓嶅彲瑙佲憼鍜屽瀛愮被鍙鈶′袱閮ㄥ垎錛夛紝緇胯壊鍔犱笂綰㈣壊閮ㄥ垎鈶紙鐢卞瓙綾繪淳鐢熺殑鍗沖瓙綾葷嫭鏈夌殑鐗規э級涓哄瓙綾匯傝鏄庯細鈶犺櫧鐒跺浜庡瓙綾諱笉鍙閮ㄥ垎浣嗗嵈鏄瓙綾誨繀涓嶅彲灝戠殑閮ㄥ垎錛屽洜涓衡憿鍙兘浼氳皟鐢ㄢ憽錛岃屸憽鍙堝彲鑳戒細璋冪敤鈶狅紝濡傛灉瀛愮被涓病鏈夆憼錛岄偅涔堢▼搴忓氨浼氬嚭閿欍?/SPAN>
瑙i噴浜岋細鍏充簬闅愯棌鏄寚瀛愮被涓庣埗綾誨瓨鍦?/SPAN>鍚屽悕浣嗘槸鏈変笉鍚岃В閲?/SPAN>鐨勫睘鎬у拰鏂規硶錛岄偅涔堢埗綾諱腑榪欎簺灞炴у拰鏂規硶灝嗕細琚殣钘忋備婦渚嬶紝鍦ㄧ埗綾諱腑瀹氫箟涓涓睘鎬у彉閲?/SPAN>i錛屽悓鏃跺湪瀛愮被涓篃瀹氫箟涓涓睘鎬у彉閲?/SPAN>i錛屾鏃剁埗綾諱腑鐨勫睘鎬у彉閲?/SPAN>i灝嗚闅愯棌鎴栬呰灞忚斀錛岀▼搴忚皟鐢ㄥ睘鎬у彉閲?/SPAN>i鏃跺垯榛樿鏄瀛愮被鐨勫睘鎬у彉閲?/SPAN>i鐨勮皟鐢紝鍚屾牱鏂規硶涔熸槸濡傛銆?/SPAN>
瑙i噴涓夛細鍏充簬瑕嗙洊鏄寚鎸囧瓙綾諱笌鐖剁被瀛樺湪鐩稿悓澶撮儴鐨勬柟娉曪紝閭d箞鐖剁被涓繖浜涚殑鏂規硶灝嗕細琚鐩栨垨鑰呰灞忚斀銆傚鏋滅▼搴忎腑闇瑕佽皟鐢ㄧ埗綾諱腑琚鐩栫殑鏂規硶鍒欎嬌鐢?/SPAN>super鍏抽敭瀛椼?/SPAN>
2銆佸璞′唬璇嶇殑鎰忎箟錛?/SPAN>super鍜?/SPAN>this
super錛氶拡瀵歸殣钘忓拰瑕嗙洊鏉ヨ錛屽ぇ澶氭暟鎯呭喌涓嬫垜浠兘鏄寚褰撳墠鐨勫瓙綾伙紝褰撴垜浠渶瑕佺壒瀹?/SPAN>
鎸囨槑璁塊棶鐖剁被鐨勬椂鍊欙紝鍒欎嬌鐢?/SPAN>super.[灞炴?/SPAN>][鏂規硶]
this錛氭棦鐒墮粯璁ゆ儏鍐墊槸鎸囧綋鍓嶇殑瀛愮被涔熷氨鏄this.鍔犱笉鍔犻兘鏄竴鏍風殑錛岄偅涓轟粈涔堣繕瑕佺敤this榪欎釜璇嶅憿錛熻繖鏄洜涓?/SPAN>this騫朵笉鏄拡瀵?/SPAN>super浜х敓鐨勶紝鑰屾槸鍥犱負鎴戜滑鍦ㄧ▼搴忎腑鐨勫緢澶氱殑鏂規硶闇瑕佽繑鍥炲綋鍓嶅璞★紝榪欐椂鍊?/SPAN>this灝辨湁閲嶈鐨勪綔鐢ㄣ傚洜涓哄湪寰堝瀵硅薄鐨勫唴閮ㄦ垜浠槸涓嶈兘鐩存帴鎻愬埌璇ュ璞$殑鍚嶇О鐨勶紝紼嬪簭鏄笉璇嗗埆鐨勩傛瘮濡傚紶涓夎浠栬嚜宸辨椂鐢ㄢ滄垜鈥濊岄潪鈥滃紶涓夆濓紝鍚﹀垯榪欐槸涓嶇鍚堝父瑙勭殑銆?/SPAN>
3銆侀噸杞藉拰瑕嗙洊鐨勫叧緋伙紵
鐩稿悓鐐癸細涓よ呴兘鏄涓涓柟娉曠殑澶氭瀹炵幇錛屾垨鑰呴兘浣撶幇浜嗗鎬佹э紙涓涓唴瀹規湁澶氱褰㈠紡錛?/SPAN>
鍖哄埆錛氳鐩栨槸鎸囨柟娉曞ご鐩稿悓鏃跺垯浜х敓瑕嗙洊銆傚鐖剁被鍜屽瓙綾繪湁涓や釜鏂規硶澶村畬鍏ㄧ浉鍚岀殑鏂規硶錛屾鏃剁埗綾葷殑榪欎釜鏂規硶灝嗚瑕嗙洊銆?/SPAN>
閲嶈澆鏄寚鏂規硶鍚嶇浉鍚屼絾鏄弬鏁頒笉鍚岋紝娉ㄦ剰閲嶈澆涓嶅尯鍒嗙埗綾誨拰瀛愮被錛屽嵆榪欎袱涓柟娉曞嵆鍙互閮藉湪鐖剁被涓篃鍙互閮藉湪瀛愮被涓垨鑰呬竴涓湪鐖剁被涓竴涓湪瀛愮被涓傝繖鏍峰綋紼嬪簭璋冪敤鏂規硶鏃舵槸鏍規嵁鍏朵腑鐨勫弬鏁幫紙涓暟銆佺被鍨嬶級榪涜鍖歸厤鐨勩?/SPAN>
4銆佹帴鍙g殑浣滅敤錛?/STRONG>
鎺ュ彛涓昏鏄負浜嗚В鍐沖閲嶇戶鎵夸腑緇ф壙鍐椾綑鐨勯棶棰樸傛墍璋撶戶鎵垮啑浣欐槸鎸囧鏋?/SPAN>B緇ф壙A錛?/SPAN>C涔熺戶鎵?/SPAN>A錛?/SPAN>D緇ф壙B鍚屾椂涔熺戶鎵?/SPAN>C錛岄偅涔?/SPAN>D涓噸澶嶅嚭鐜頒簡A鐨勫唴瀹癸紙鏃㈡湁鏉ヨ嚜B鐨勪篃鏈夋潵鑷?/SPAN>C鐨勶級錛岃繖鏍峰氨浜х敓鐨勭戶鎵垮啑浣欑殑闂銆傛帴鍙e疄闄呬笂鐩稿綋浜庝竴涓娊璞$被錛屼絾鏄畠鍜岀被鐨勬渶澶у尯鍒氨鏄畠鍏佽瀹炵幇澶氫釜銆傞氳繃綾誨疄鐜頒唬鐮佸鐢ㄥ彨鍋氱戶鎵?/SPAN>extends錛岄氳繃鎺ュ彛瀹炵幇浠g爜澶嶇敤鍙仛瀹炵幇implements銆傚彲浠ヨ鎺ュ彛鏄彉鐩哥殑瀹炵幇浜嗗閲嶇戶鎵垮悓鏃跺張閬垮厤鐨勭戶鎵垮啑浣欙紝鎵浠ュ浜庨潰鍚戝璞$殑紼嬪簭璁捐鏉ヨ鏄笉鍙垨緙虹殑銆傚叧閿瓧interface 緇ф壙extends 瀹炵幇implements
5銆佸紓甯稿鐞嗙殑鎰忎箟錛?/STRONG>
鏄負浜嗘憭寮冮敊璇?/SPAN>try鐩戣鍙兘鍑洪敊鐨勪唬鐮侊紝catch澶勭悊鏈哄埗閫氳繃寮傚父瀵硅薄鐨勭被鍨嬪尮閰嶆潵閫夋嫨閫氳繃鍝鏈哄埗澶勭悊榪欎釜閿欒銆傛剰涔夋墍鍦細(1)銆佽В鍐充簡紼嬪簭閿欒鐨勯棶棰橈紝鍙互浜哄伐騫查銆佹彁紺烘垨鑰呬腑姝㈢▼搴忋?2)銆佸紩鍏ヤ簡灞傛鐨勯棶棰橈紝娌℃湁寮傚父澶勭悊鏈哄埗鏃剁▼搴忛亣鍒伴敊璇噰鐢ㄧ殑鍔炴硶鏄互return褰㈠紡灞傚眰浼犻掓潵澶勭悊錛?/SPAN>