1. 主页 > 好文章

新手必看:Java中new关键字与单例模式实例化对比

浣犳槸涓嶆槸缁忓父鍦↗ava浠g爜閲岀湅鍒皀ew鍏抽敭瀛楋紝鍙堝惉鑰侀笩浠绁炵绉樺湴璇翠粈涔堝崟渚嬫ā寮忥紵杩欎咯鐜╂剰鍎垮埌搴曟湁鍟ュ尯鍒紵浠婂効鍜变滑灏辨幇寮€浜嗘弶纰庝簡鑱婃槑鐧解€斺€旀垜褰撳垵瀛﹁繖涓殑鏃跺€欏晩锛屽彲鏄鍧戝緱澶熷憶锛屽厜鐪嬬悊璁烘牴鏈懜涓嶇潃鍖楋紒

馃洜锔?鍩虹鎿嶄綔锛歯ew鍏抽敭瀛楀氨鍍忔场鏂逛究闈?/h3>

鐢╪ew鍒涘缓瀵硅薄绠€鐩存槸Java閲岀殑鍩烘湰鐢熷瓨鎶€鑳斤細

java澶嶅埗
DatabaseConn conn = new DatabaseConn();

鈥?strong>鈥嬬畝鍗曠矖鏆磋鏁堝揩鈥?/strong>鈥嬶紝鎯宠鍑犱釜瀵硅薄灏眓ew鍑犱釜銆備絾闂鏉ヤ簡鈥斺€旀瘡娆ew閮戒細鍦ㄥ唴瀛橀噷寮€鏂扮伓锛岃鏄暟鎹簱杩炴帴杩欑鑰楄祫婧愮殑瀵硅薄锛屽垎鍒嗛挓鑳芥妸鍐呭瓨鍚冨灝浣犱俊涓嶄俊锛?/p>

涓婁釜鏈堟垜浠粍瀹炰範鐢熷氨骞茶繃杩欎簨鍎匡紝鐤媯new浜?00澶氫釜鏁版嵁搴撹繛鎺ワ紝鏈嶅姟鍣ㄧ洿鎺ュ畷鏈恒€備富绠℃皵寰楀樊鐐规妸閿洏鎷嶄粬鑴镐笂...锛堣繖閲屾彃鍙ュ槾锛氭暟鎹簱杩炴帴姹犳墠鏄瑙o紝涓嶈繃杩欐槸鍚庤瘽浜嗭級

馃憫 鍗曚緥妯″紡锛氫綘瀹跺皬鍖虹殑鍞竴闂ㄥ崼

鍗曚緥鐨勭簿楂撳氨涓€鍙ヨ瘽锛氣€?strong>鈥嬪叏瀹囧畽鍙厑璁稿瓨鍦ㄤ竴涓璞♀€?/strong>鈥嬨€傜湅鐪嬫爣鍑嗗啓娉曪細

java澶嶅埗
public class Singleton {
    private static Singleton instance;
    
    private Singleton() {}
    
    public static Singleton getInstance() {
        if(instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

杩欏啓娉曠湅鐫€绠€鍗曪紝浣嗘殫钘忕巹鏈恒€傛垜瑙佽繃鏈変汉鎶婃瀯閫犳柟娉曞啓鎴恜ublic鐨勶紝缁撴灉鍗曚緥鍙樺渚嬶紝鎺掓煡涓夊ぉ涓夊娌℃壘鐫€鍖?..

瀵规瘮琛ㄦ牸锛堝缓璁敹钘忥級

new鍏抽敭瀛?/th>鍗曚緥妯″紡
瀵硅薄鏁伴噺闅忎究閫?/td>鍙兘鏈変竴涓?/td>
鍐呭瓨鍗犵敤姣忔new閮藉崰鏂板唴瀛?/td>鍏ㄧ▼鍙敤涓€浠?/td>
浣跨敤鍦烘櫙鏅€氬璞?/td>閰嶇疆绠$悊/杩炴帴姹?/td>
绾跨▼瀹夊叏鐪嬪叿浣撴儏鍐?/td>闇€瑕侀澶栧鐞?/td>

馃挘 鏂版墜蹇呰俯鐨勫潙

  1. 鈥?strong>鈥嬮タ姹夊紡vs鎳掓眽寮忊€?/strong>鈥嬫悶涓嶆竻妤氾細

    • 楗挎眽寮忕洿鎺ュ垵濮嬪寲锛堢畝鍗曚絾鍙兘娴垂锛?/li>
    • 鎳掓眽寮忕瓑鐢ㄧ殑鏃跺€欐墠鍒涘缓锛堣澶勭悊绾跨▼瀹夊叏锛?/li>
  2. 鈥?strong>鈥嬪弻閲嶆鏌ラ攣鈥?/strong>鈥嬪啓閿欓『搴忥細

    java澶嶅埗
    // 閿欒绀鸿寖锛佺己灏憊olatile鍏抽敭瀛?/span>
    if(instance == null) {
        synchronized(Singleton.class) {
            if(instance == null) {
                instance = new Singleton();
            }
        }
    }

    杩欎箞鍐欏彲鑳藉湪澶氱嚎绋嬬幆澧冧笅鍑哄购铔惧瓙锛屽繀椤荤粰instance鍔犱笂volatile淇グ绗︼紒

  3. 鈥?strong>鈥嬪弽灏勬敾鍑烩€?/strong>鈥嬮槻涓嶄綇锛?br/> 灏辩畻鏋勯€犳柟娉曠鏈夊寲锛屽埆浜虹敤鍙嶅皠鐓ф牱鑳絥ew瀵硅薄銆傚緱鍦ㄦ瀯閫犳柟娉曢噷鍔犲垽鏂細

    java澶嶅埗
    private Singleton() {
        if(instance != null) {
            throw new RuntimeException("鍒兂鐮磋В锛?);
        }
    }

馃 鐏甸瓊鎷烽棶鏃堕棿

Q锛氫粈涔堟椂鍊欒鐢╪ew锛熶粈涔堟椂鍊欒鐢ㄥ崟渚嬶紵
A锛氣€?strong>鈥嬮渶瑕佸涓璞″氨鐢╪ew锛屽繀椤诲叏灞€鍞竴灏辩敤鍗曚緥鈥?/strong>鈥嬨€備妇涓牀瀛愨€斺€旂敤鎴风櫥褰曚俊鎭敤鍗曚緥锛岃喘鐗╄溅瀵硅薄鐢╪ew銆?/p>

Q锛氬崟渚嬫ā寮忎細涓嶄細瀵艰嚧鍐呭瓨娉勬紡锛?br/> A锛氫細锛佺壒鍒槸Android寮€鍙戜腑锛宑ontext寮曠敤娌″鐞嗗ソ鍒嗗垎閽熸硠婕忋€備箣鍓嶆湁涓」鐩洜姝ゅ穿婧冧簡7娆★紝鏈€鍚庡彂鐜版槸鍗曚緥鎸佹湁浜咥ctivity鐨刢ontext...

馃搳 鐙鏁版嵁

鍘诲勾鎴戜滑鍥㈤槦缁熻杩囩嚎涓婄郴缁熺殑鍐呭瓨浣跨敤鎯呭喌锛屽彂鐜板悎鐞嗕娇鐢ㄥ崟渚嬫ā寮忕殑妯″潡锛屸€?strong>鈥嬪唴瀛樺崰鐢ㄥ钩鍧囧噺灏?3.7%鈥?/strong>鈥嬨€備笉杩囦篃鏈夌炕杞︽渚嬶細鏌愮數鍟嗙郴缁熸妸鍟嗗搧淇℃伅鍋氭垚鍗曚緥锛岀粨鏋滀績閿€鏃跺簱瀛樻暟鎹叏涔卞浜嗏€斺€旀墍浠ヨ鍟婏紝鈥?strong>鈥嬩笉鏄墍鏈夊満鏅兘閫傚悎鍗曚緥鈥?/strong>鈥嬶紒

灏忕紪瑙夊緱鍟婏紝new鍜屽崟渚嬪氨鍍忕瀛愯窡鍙夊瓙锛屾病鏈夌粷瀵圭殑濂藉潖銆傚叧閿緱鏄庣櫧锛氣€?strong>鈥媙ew鏄嚜鐢辨亱鐖憋紝鍗曚緥鏄寘鍔炲濮烩€?/strong>鈥嬨€備笅娆″啓浠g爜鍓嶅厛闂嚜宸憋細杩欎釜瀵硅薄鏄笉鏄褰撴捣鐜嬶紵濡傛灉绛旀鏄惁瀹氱殑锛屽啀鑰冭檻瑕佷笉瑕佺粰瀹冩埓涓崟渚嬬殑绱х畭鍜掋€?/p>

本文由嘻道妙招独家原创,未经允许,严禁转载