锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲αv久久久噜噜噜噜噜,亚洲最新永久在线观看,久久精品国产亚洲AV未满十八 http://www.tkk7.com/yesjoy/category/7369.html<font color="red">鈽?lt;/font><font color="blue">鎬誨湪鐖北 鎵浠ヨ壈杈?鎬誨湪瀵繪ⅵ 鎵浠ヨ嫤鐥?lt;/font><font color="red">鈽?lt;/font>zh-cnThu, 09 Sep 2010 04:35:54 GMTThu, 09 Sep 2010 04:35:54 GMT60鍗曚緥妯″紡瀹屽叏鍓栨瀽(2)---- 鎺㈢┒綆鍗曞嵈鍙堜嬌浜鴻糠鎯戠殑鍗曚緥妯″紡http://www.tkk7.com/yesjoy/articles/30618.html鈽厃esjoy鈽?/dc:creator>鈽厃esjoy鈽?/author>Tue, 14 Feb 2006 07:33:00 GMThttp://www.tkk7.com/yesjoy/articles/30618.htmlhttp://www.tkk7.com/yesjoy/comments/30618.htmlhttp://www.tkk7.com/yesjoy/articles/30618.html#Feedback0http://www.tkk7.com/yesjoy/comments/commentRss/30618.htmlhttp://www.tkk7.com/yesjoy/services/trackbacks/30618.html嫻嬭瘯鍗曚緥妯″紡
鎺ヤ笅鏉ワ紝鎴戜嬌鐢ㄤ笌log4j鐩稿搴旂殑JUnit鏉ユ祴璇曞崟渚嬬被錛屽畠浼氳瘡絀垮湪榪欑瘒鏂囩珷浣欎笅鐨勯儴鍒嗐傚鏋滀綘瀵笿Unit鎴杔og4j涓嶅緢鐔熸倝錛岃鍙傝冪浉鍏寵祫婧愩?BR>
渚?鏄竴涓敤JUnit嫻嬭瘯渚?鐨勫崟渚嬫ā寮忕殑妗堜緥錛?BR>渚?.涓涓崟渚嬫ā寮忕殑妗堜緥
  1. import org.apache.log4j.Logger;
  2. import junit.framework.Assert;
  3. import junit.framework.TestCase;
  4. public class SingletonTest extends TestCase {
  5.    private ClassicSingleton sone = null, stwo = null;
  6.    private static Logger logger = Logger.getRootLogger();
  7.    public SingletonTest(String name) {
  8.       super(name);
  9.    }
  10.    public void setUp() {
  11.       logger.info("getting singleton...");
  12.       sone = ClassicSingleton.getInstance();
  13.       logger.info("...got singleton: " + sone);
  14.       logger.info("getting singleton...");
  15.       stwo = ClassicSingleton.getInstance();
  16.       logger.info("...got singleton: " + stwo);
  17.    }
  18.    public void testUnique() {
  19.       logger.info("checking singletons for equality");
  20.       Assert.assertEquals(true, sone == stwo);
  21.    }
  22. }

渚?涓ゆ璋冪敤ClassicSingleton.getInstance()錛屽茍涓旀妸榪斿洖鐨勫紩鐢ㄥ瓨鍌ㄥ湪鎴愬憳鍙橀噺涓傛柟娉晅estUnique()浼氭鏌ヨ繖浜涘紩鐢ㄧ湅瀹冧滑鏄惁鐩稿悓銆備緥3鏄繖涓祴璇曟渚嬬殑杈撳嚭錛?BR>渚?.鏄繖涓祴璇曟渚嬬殑杈撳嚭
  1. Buildfile: build.xml
  2. init:
  3.      [echo] Build 20030414 (14-04-2003 03:08)
  4. compile:
  5. run-test-text:
  6.      [java] .INFO main: [b]getting singleton...[/b]
  7.      [java] INFO main: [b]created singleton:[/b] Singleton@e86f41
  8.      [java] INFO main: ...got singleton: Singleton@e86f41
  9.      [java] INFO main: [b]getting singleton...[/b]
  10.      [java] INFO main: ...got singleton: Singleton@e86f41
  11.      [java] INFO main: checking singletons for equality
  12.      [java] Time: 0.032
  13.      [java] OK (1 test)

姝e鍓嶉潰鐨勬竻鍗曟墍紺猴紝渚?鐨勭畝鍗曟祴璇曢『鍒╅氳繃----閫氳繃ClassicSingleton.getInstance()鑾峰緱鐨勪袱涓崟渚嬬被鐨勫紩鐢ㄧ‘瀹炵浉鍚?鐒惰岋紝浣犺鐭ラ亾榪欎簺寮曠敤鏄湪鍗曠嚎紼嬩腑寰楀埌鐨勩備笅闈㈢殑閮ㄥ垎鐫閲嶄簬鐢ㄥ綰跨▼嫻嬭瘯鍗曚緥綾匯?BR>

澶氱嚎紼嬪洜绱犵殑鑰冭檻


鍦ㄤ緥1涓殑ClassicSingleton.getInstance()鏂規硶鐢變簬涓嬮潰鐨勪唬鐮佽屼笉鏄嚎紼嬪畨鍏ㄧ殑錛?BR>
  1. 1: if(instance == null) {
  2. 2:    instance = new Singleton();
  3. 3: }

濡傛灉涓涓嚎紼嬪湪絎簩琛岀殑璧嬪艱鍙ュ彂鐢熶箣鍓嶅垏鎹紝閭d箞鎴愬憳鍙橀噺instance浠嶇劧鏄痭ull錛岀劧鍚庡彟涓涓嚎紼嬪彲鑳芥帴涓嬫潵榪涘叆鍒癷f鍧椾腑銆傚湪榪欑鎯呭喌涓嬶紝涓や釜涓嶅悓鐨勫崟渚嬬被瀹炰緥灝辮鍒涘緩銆備笉騫哥殑鏄繖縐嶅亣瀹氬緢灝戝彂鐢燂紝榪欐牱榪欑鍋囧畾涔熷緢闅懼湪嫻嬭瘯鏈熼棿鍑虹幇錛堣瘧娉細鍦ㄨ繖鍙兘鏄綔鑰呭寰堝皯鍑虹幇榪欑鎯呭喌鑰屽鑷存棤娉曟祴璇曚粠鑰屼嬌浜轟滑鏀炬澗璀︽儠鑰屾劅鍒板徆鎯滐級銆備負浜嗘紨紺鴻繖涓嚎紼嬭疆鎹紝鎴戝緱閲嶆柊瀹炵幇渚?涓殑閭d釜綾匯備緥4灝辨槸淇鍚庣殑鍗曚緥綾伙細
渚?.浜轟負瀹夋帓鐨勬柟寮?/B>
  1. import org.apache.log4j.Logger;
  2. public class Singleton {
  3.   private static Singleton singleton = null;
  4.   private static Logger logger = Logger.getRootLogger();
  5.   private static boolean firstThread = true;
  6.   protected Singleton() {
  7.     // Exists only to defeat instantiation.
  8.   }
  9.   public static Singleton getInstance() {
  10.      if(singleton == null) {
  11.         simulateRandomActivity();
  12.         singleton = new Singleton();
  13.      }
  14.      logger.info("created singleton: " + singleton);
  15.      return singleton;
  16.   }
  17.   private static void simulateRandomActivity() {
  18.      try {
  19.         if(firstThread) {
  20.            firstThread = false;
  21.            logger.info("sleeping...");
  22.            // This nap should give the second thread enough time
  23.            // to get by the first thread.
  24.              Thread.currentThread().sleep(50);
  25.        }
  26.      }
  27.      catch(InterruptedException ex) {
  28.         logger.warn("Sleep interrupted");
  29.      }
  30.   }
  31. }

闄や簡鍦ㄨ繖涓竻鍗曚腑鐨勫崟渚嬬被寮哄埗浣跨敤浜嗕竴涓綰跨▼閿欒澶勭悊錛屼緥4綾諱技浜庝緥1涓殑鍗曚緥綾匯傚湪getInstance()鏂規硶絎竴嬈¤璋冪敤鏃訛紝璋冪敤榪欎釜鏂規硶鐨勭嚎紼嬩細浼戠湢50姣浠ヤ究鍙﹀鐨勭嚎紼嬩篃鏈夋椂闂磋皟鐢╣etInstance()騫跺垱寤轟竴涓柊鐨勫崟渚嬬被瀹炰緥銆傚綋浼戠湢鐨勭嚎紼嬭閱掓椂錛屽畠涔熶細鍒涘緩涓涓柊鐨勫崟渚嬬被瀹炰緥錛岃繖鏍鋒垜浠氨鏈変袱涓崟渚嬬被瀹炰緥銆傚敖綆′緥4鏄漢涓哄姝ょ殑錛屼絾瀹冨嵈妯℃嫙浜嗙涓涓嚎紼嬭皟鐢ㄤ簡getInstance()騫跺湪娌℃湁瀹屾垚鏃惰鍒囨崲鐨勭湡瀹炴儏褰€?BR>渚?嫻嬭瘯浜嗕緥4鐨勫崟渚嬬被錛?BR>渚?.澶辮觸鐨勬祴璇?/B>
  1. import org.apache.log4j.Logger;
  2. import junit.framework.Assert;
  3. import junit.framework.TestCase;
  4. public class SingletonTest extends TestCase {
  5.    private static Logger logger = Logger.getRootLogger();
  6.    private static Singleton singleton = null;
  7.    public SingletonTest(String name) {
  8.       super(name);
  9.    }
  10.    public void setUp() {
  11.       singleton = null;
  12.    }
  13.    public void testUnique() throws InterruptedException {
  14.       // Both threads call Singleton.getInstance().
  15.       Thread threadOne = new Thread(new SingletonTestRunnable()),
  16.              threadTwo = new Thread(new SingletonTestRunnable());
  17.       threadOne.start();
  18.       threadTwo.start();
  19.       threadOne.join();
  20.       threadTwo.join();
  21.    }
  22.    private static class SingletonTestRunnable implements Runnable {
  23.       public void run() {
  24.          // Get a reference to the singleton.
  25.          Singleton s = Singleton.getInstance();
  26.          // Protect singleton member variable from
  27.          // multithreaded access.
  28.          synchronized(SingletonTest.class) {
  29.             if(singleton == null// If local reference is null...
  30.                singleton = s;     // ...set it to the singleton
  31.          }
  32.          // Local reference must be equal to the one and
  33.          // only instance of Singleton; otherwise, we have two
  34.                   // Singleton instances.
  35.          Assert.assertEquals(true, s == singleton);
  36.       }
  37.    }
  38. }

渚?鐨勬祴璇曟渚嬪垱寤轟袱涓嚎紼嬶紝鐒跺悗鍚勮嚜鍚姩錛岀瓑寰呭畬鎴愩傝繖涓渚嬩繚鎸佷簡涓涓鍗曚緥綾葷殑闈欐佸紩鐢紝姣忎釜綰跨▼閮戒細璋冪敤Singleton.getInstance()銆傚鏋滆繖涓潤鎬佹垚鍛樺彉閲忔病鏈夎璁劇疆錛岄偅涔堢涓涓嚎紼嬪氨浼氬皢瀹冭涓洪氳繃璋冪敤getInstance()鑰屽緱鍒扮殑寮曠敤錛岀劧鍚庤繖涓潤鎬佸彉閲忎細涓庝竴涓眬閮ㄥ彉閲忔瘮杈冩槸鍚︾浉絳夈?BR>鍦ㄨ繖涓祴璇曟渚嬭繍琛屾椂浼氬彂鐢熶竴緋誨垪鐨勪簨鎯咃細絎竴涓嚎紼嬭皟鐢╣etInstance()錛岃繘鍏f鍧楋紝鐒跺悗浼戠湢;鎺ョ潃錛岀浜屼釜綰跨▼涔熻皟鐢╣etInstance()騫朵笖鍒涘緩浜嗕竴涓崟渚嬬被鐨勫疄渚嬨傜浜屼釜綰跨▼浼氳緗繖涓潤鎬佹垚鍛樺彉閲忎負瀹冩墍鍒涘緩鐨勫紩鐢ㄣ傜浜屼釜綰跨▼媯鏌ヨ繖涓潤鎬佹垚鍛樺彉閲忎笌涓涓眬閮ㄥ浠界殑鐩哥瓑鎬с傜劧鍚庢祴璇曢氳繃銆傚綋絎竴涓嚎紼嬭閱掓椂錛屽畠涔熶細鍒涘緩涓涓崟渚嬬被鐨勫疄渚嬶紝騫朵笖瀹冧笉浼氳緗偅涓潤鎬佹垚鍛樺彉閲忥紙鍥犱負絎簩涓嚎紼嬪凡緇忚緗繃浜嗭級錛屾墍浠ラ偅涓潤鎬佸彉閲忎笌閭d釜灞閮ㄥ彉閲忚劚紱誨悓姝ワ紝鐩哥瓑鎬ф祴璇曞嵆鍛婂け璐ャ備緥6鍒楀嚭浜嗕緥5鐨勮緭鍑猴細
渚?.渚?鐨勮緭鍑?/B>
  1. Buildfile: build.xml
  2. init:
  3.      [echo] Build 20030414 (14-04-2003 03:06)
  4. compile:
  5. run-test-text:
  6. INFO Thread-1: sleeping...
  7. INFO Thread-2: created singleton: Singleton@7e5cbd
  8. INFO Thread-1: created singleton: Singleton@704ebb
  9. junit.framework.AssertionFailedError: expected: but was:
  10.    at junit.framework.Assert.fail(Assert.java:47)
  11.    at junit.framework.Assert.failNotEquals(Assert.java:282)
  12.    at junit.framework.Assert.assertEquals(Assert.java:64)
  13.    at junit.framework.Assert.assertEquals(Assert.java:149)
  14.    at junit.framework.Assert.assertEquals(Assert.java:155)
  15.    at SingletonTest$SingletonTestRunnable.run(Unknown Source)
  16.    at java.lang.Thread.run(Thread.java:554)
  17.      [java] .
  18.      [java] Time: 0.577
  19.      [java] OK (1 test)

鍒扮幇鍦ㄤ負姝㈡垜浠凡緇忕煡閬撲緥4涓嶆槸綰跨▼瀹夊叏鐨勶紝閭e氨璁╂垜浠湅鐪嬪浣曚慨姝e畠銆?BR>

鍚屾


瑕佷嬌渚?鐨勫崟渚嬬被涓虹嚎紼嬪畨鍏ㄧ殑寰堝鏄?---鍙鍍忎笅闈竴涓悓姝ュ寲getInstance()鏂規硶錛?BR>
  1. public synchronized static Singleton getInstance() {
  2.    if(singleton == null) {
  3.       simulateRandomActivity();
  4.       singleton = new Singleton();
  5.    }
  6.    logger.info("created singleton: " + singleton);
  7.    return singleton;
  8. }

鍦ㄥ悓姝ュ寲getInstance()鏂規硶鍚庯紝鎴戜滑灝卞彲浠ュ緱鍒頒緥5鐨勬祴璇曟渚嬭繑鍥炵殑涓嬮潰鐨勭粨鏋滐細
  1. Buildfile: build.xml
  2. init:
  3.      [echo] Build 20030414 (14-04-2003 03:15)
  4. compile:
  5.     [javac] Compiling 2 source files
  6. run-test-text:
  7. INFO Thread-1: sleeping...
  8. INFO Thread-1: created singleton: Singleton@ef577d
  9. INFO Thread-2: created singleton: Singleton@ef577d
  10.      [java] .
  11.      [java] Time: 0.513
  12.      [java] OK (1 test)

榪欐錛岃繖涓祴璇曟渚嬪伐浣滄甯革紝騫朵笖澶氱嚎紼嬬殑鐑︽伡涔熻瑙e喅;鐒惰岋紝鏈烘晱鐨勮鑰呭彲鑳戒細璁よ瘑鍒癵etInstance()鏂規硶鍙渶瑕佸湪絎竴嬈¤璋冪敤鏃跺悓姝ャ傚洜涓哄悓姝ョ殑鎬ц兘寮閿寰堟槀璐碉紙鍚屾鏂規硶姣旈潪鍚屾鏂規硶鑳介檷浣庡埌100嬈″乏鍙籌級錛屾垨璁告垜浠彲浠ュ紩鍏ヤ竴縐嶆ц兘鏀硅繘鏂規硶錛屽畠鍙悓姝ュ崟渚嬬被鐨刧etInstance()鏂規硶涓殑璧嬪艱鍙ャ?BR>

涓縐嶆ц兘鏀硅繘鐨勬柟娉?/H3>
瀵繪壘涓縐嶆ц兘鏀硅繘鏂規硶鏃訛紝浣犲彲鑳戒細閫夋嫨鍍忎笅闈㈣繖鏍烽噸鍐檊etInstance()鏂規硶錛?BR>
  1. public static Singleton getInstance() {
  2.    if(singleton == null) {
  3.       synchronized(Singleton.class) { 
  4.          singleton = new Singleton();
  5.       }
  6.    }
  7.    return singleton;
  8. }

榪欎釜浠g爜鐗囨鍙悓姝ヤ簡鍏抽敭鐨勪唬鐮侊紝鑰屼笉鏄悓姝ユ暣涓柟娉曘傜劧鑰岃繖孌典唬鐮佸嵈涓嶆槸綰跨▼瀹夊叏鐨勩傝冭檻涓涓嬩笅闈㈢殑鍋囧畾錛氱嚎紼?榪涘叆鍚屾鍧楋紝騫朵笖鍦ㄥ畠緇檚ingleton鎴愬憳鍙橀噺璧嬪間箣鍓嶇嚎紼?琚垏鎹€傛帴鐫鍙︿竴涓嚎紼嬭繘鍏f鍧椼傜浜屼釜綰跨▼灝嗙瓑寰呯洿鍒扮涓涓嚎紼嬪畬鎴愶紝騫朵笖浠嶇劧浼氬緱鍒頒袱涓笉鍚岀殑鍗曚緥綾誨疄渚嬨傛湁淇榪欎釜闂鐨勬柟娉曞悧錛熻璇諱笅鍘匯?BR>

鍙岄噸鍔犻攣媯鏌?/H3>
鍒濈湅涓婂幓錛屽弻閲嶅姞閿佹鏌ヤ技涔庢槸涓縐嶄嬌鎳掓眽寮忓疄渚嬪寲涓虹嚎紼嬪畨鍏ㄧ殑鎶鏈備笅闈㈢殑浠g爜鐗囨灞曠ず浜嗚繖縐嶆妧鏈細
  1. public static Singleton getInstance() {
  2.   if(singleton == null) {
  3.      synchronized(Singleton.class) {
  4.        if(singleton == null) {
  5.          singleton = new Singleton();
  6.        }
  7.     }
  8.   }
  9.   return singleton;
  10. }

濡傛灉涓や釜綰跨▼鍚屾椂璁塊棶getInstance()鏂規硶浼氬彂鐢熶粈涔堬紵鎯沖儚涓涓嬬嚎紼?榪涜鍚屾鍧楅┈涓婂張琚垏鎹€傛帴鐫錛岀浜屼釜綰跨▼榪涘叆if 鍧椼傚綋綰跨▼1閫鍑哄悓姝ュ潡鏃訛紝綰跨▼2浼氶噸鏂版鏌ョ湅鏄惁singleton瀹炰緥浠嶇劧涓簄ull銆傚洜涓虹嚎紼?璁劇疆浜唖ingleton鎴愬憳鍙橀噺錛屾墍浠ョ嚎紼?鐨勭浜屾媯鏌ヤ細澶辮觸錛岀浜屼釜鍗曚緥綾誨疄渚嬩篃灝變笉浼氳鍒涘緩銆備技涔庡氨鏄姝ゃ?BR>涓嶅垢鐨勬槸錛屽弻閲嶅姞閿佹鏌ヤ笉浼氫繚璇佹甯稿伐浣滐紝鍥犱負緙栬瘧鍣ㄤ細鍦⊿ingleton鐨勬瀯閫犳柟娉曡璋冪敤涔嬪墠闅忔剰緇檚ingleton璧嬩竴涓箋傚鏋滃湪singleton寮曠敤琚祴鍊間箣鍚庤岃鍒濆鍖栦箣鍓嶇嚎紼?琚垏鎹紝綰跨▼2灝變細琚繑鍥炰竴涓鏈垵濮嬪寲鐨勫崟渚嬬被瀹炰緥鐨勫紩鐢ㄣ?BR>

涓涓敼榪涚殑綰跨▼瀹夊叏鐨勫崟渚嬫ā寮忓疄鐜?/H3>
渚?鍒楀嚭浜嗕竴涓畝鍗曘佸揩閫熻屽張鏄嚎紼嬪畨鍏ㄧ殑鍗曚緥妯″紡瀹炵幇錛?BR>渚?.涓涓畝鍗曠殑鍗曚緥綾?/B>
  1. public class Singleton {
  2.    public final static Singleton INSTANCE = new Singleton();
  3.    private Singleton() {
  4.          // Exists only to defeat instantiation.
  5.       }
  6. }

榪欐浠g爜鏄嚎紼嬪畨鍏ㄧ殑鏄洜涓洪潤鎬佹垚鍛樺彉閲忎竴瀹氫細鍦ㄧ被琚涓嬈¤闂椂琚垱寤恒備綘寰楀埌浜嗕竴涓嚜鍔ㄤ嬌鐢ㄤ簡鎳掓眽寮忓疄渚嬪寲鐨勭嚎紼嬪畨鍏ㄧ殑瀹炵幇;浣犲簲璇ヨ繖鏍蜂嬌鐢ㄥ畠錛?BR>
  1.       Singleton singleton = Singleton.INSTANCE;
  2.       singleton.dothis();
  3.       singleton.dothat();
  4.       ...

褰撶劧涓囦簨騫朵笉瀹岀編錛屽墠闈㈢殑Singleton鍙槸涓涓姌琛風殑鏂規;濡傛灉浣犱嬌鐢ㄩ偅涓疄鐜幫紝浣犲氨鏃犳硶鏀瑰彉瀹冧互渚垮悗鏉ヤ綘鍙兘鎯寵鍏佽澶氫釜鍗曚緥綾葷殑瀹炰緥銆傜敤涓縐嶆洿鎶樺搥鐨勫崟渚嬫ā寮忓疄鐜?閫氳繃涓涓猤etInstance()鏂規硶鑾峰緱瀹炰緥)浣犲彲浠ユ敼鍙樿繖涓柟娉曚互渚胯繑鍥炰竴涓敮涓鐨勫疄渚嬫垨鑰呮槸鏁扮櫨涓疄渚嬩腑鐨勪竴涓紟浣犱笉鑳界敤涓涓叕寮涓旀槸闈欐佺殑錛坧ublic static)鎴愬憳鍙橀噺榪欐牱鍋氾紟

浣犲彲浠ュ畨鍏ㄧ殑浣跨敤渚嬶紬鐨勫崟渚嬫ā寮忓疄鐜版垨鑰呮槸渚嬶紤鐨勫甫涓涓悓姝ョ殑getInstance()鏂規硶鐨勫疄鐜幫紟鐒惰岋紝鎴戜滑蹇呴』瑕佺爺絀跺彟涓涓棶棰橈細浣犲繀欏誨湪緙栬瘧鏈熸寚瀹氳繖涓崟渚嬬被錛岃繖鏍峰氨涓嶆槸寰堢伒媧伙紟涓涓崟渚嬬被鐨勬敞鍐岃〃浼氳鎴戜滑鍦ㄨ繍琛屾湡鎸囧畾涓涓崟渚嬬被錛?BR>

]]>鍗曚緥妯″紡瀹屽叏鍓栨瀽(1)---- 鎺㈢┒綆鍗曞嵈鍙堜嬌浜鴻糠鎯戠殑鍗曚緥妯″紡http://www.tkk7.com/yesjoy/articles/30617.html鈽厃esjoy鈽?/dc:creator>鈽厃esjoy鈽?/author>Tue, 14 Feb 2006 07:32:00 GMThttp://www.tkk7.com/yesjoy/articles/30617.htmlhttp://www.tkk7.com/yesjoy/comments/30617.htmlhttp://www.tkk7.com/yesjoy/articles/30617.html#Feedback0http://www.tkk7.com/yesjoy/comments/commentRss/30617.htmlhttp://www.tkk7.com/yesjoy/services/trackbacks/30617.html姒傝
鍗曚緥妯″紡鏄渶綆鍗曠殑璁捐妯″紡涔嬩竴錛屼絾鏄浜嶫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. public class ClassicSingleton {
    2.    private static ClassicSingleton instance = null;
    3.    protected ClassicSingleton() {
    4.       // Exists only to defeat instantiation.
    5.    }
    6.    public static ClassicSingleton getInstance() {
    7.       if(instance == null) {
    8.          instance = new ClassicSingleton();
    9.       }
    10.       return instance;
    11.    }
    12. }

    鍦ㄤ緥1涓殑鍗曚緥妯″紡鐨勫疄鐜板緢瀹規槗鐞嗚В銆侰lassicSingleton綾諱繚鎸佷簡涓涓鍗曠嫭鐨勫崟渚嬪疄渚嬬殑闈欐佸紩鐢紝騫朵笖浠庨潤鎬佹柟娉昰etInstance()涓繑鍥為偅涓紩鐢ㄣ?BR>鍏充簬ClassicSingleton綾伙紝鏈夊嚑涓鎴戜滑鎰熷叴瓚g殑鍦版柟銆傞鍏堬紝ClassicSingleton浣跨敤浜嗕竴涓紬鎵鍛ㄧ煡鐨勬噿姹夊紡瀹炰緥鍖栧幓鍒涘緩閭d釜鍗曚緥綾葷殑寮曠敤;緇撴灉錛岃繖涓崟渚嬬被鐨勫疄渚嬬洿鍒癵etInstance()鏂規硶琚涓嬈¤皟鐢ㄦ椂鎵嶈鍒涘緩銆傝繖縐嶆妧宸у彲浠ョ‘淇濆崟渚嬬被鐨勫疄渚嬪彧鏈夊湪闇瑕佹椂鎵嶈寤虹珛鍑烘潵銆傚叾嬈★紝娉ㄦ剰ClassicSingleton瀹炵幇浜嗕竴涓猵rotected鐨勬瀯閫犳柟娉曪紝榪欐牱瀹㈡埛绔笉鑳界洿鎺ュ疄渚嬪寲涓涓狢lassicSingleton綾葷殑瀹炰緥銆傜劧鑰岋紝浣犱細鎯婂鐨勫彂鐜頒笅闈㈢殑浠g爜瀹屽叏鍚堟硶錛?BR>
    1. public class SingletonInstantiator { 
    2.   public SingletonInstantiator() { 
    3.    ClassicSingleton instance = ClassicSingleton.getInstance();
    4. ClassicSingleton anotherInstance =
    5. new ClassicSingleton();
    6.        ... 
    7.   } 
    8. }

    鍓嶉潰榪欎釜浠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>
    鏈畬寰呯畫銆?


  • ]]>
    java23縐嶆ā寮忎竴鐐瑰氨閫?/title><link>http://www.tkk7.com/yesjoy/articles/30615.html</link><dc:creator>鈽厃esjoy鈽?/dc:creator><author>鈽厃esjoy鈽?/author><pubDate>Tue, 14 Feb 2006 07:31:00 GMT</pubDate><guid>http://www.tkk7.com/yesjoy/articles/30615.html</guid><wfw:comment>http://www.tkk7.com/yesjoy/comments/30615.html</wfw:comment><comments>http://www.tkk7.com/yesjoy/articles/30615.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/yesjoy/comments/commentRss/30615.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/yesjoy/services/trackbacks/30615.html</trackback:ping><description><![CDATA[鍒涘緩鍨嬫ā寮?BR><BR>FACTORY?浜烘墠甯傚満錛氫互寰鏄鍝釜浜烘墠錛屽氨鎵懼摢涓漢鎵嶏紝鏁堢巼浣庯紝鐜板湪鏈変簡浜烘墠甯傚満錛屾垜浠彧闇<BR>鐩存帴鍘諱漢鎵嶅競鍦烘寫涓涓ソ浜嗭紱<BR><BR>BUILDER?鐢熶駭嫻佹按綰匡細浠ュ墠鏄墜宸ヤ笟浣滃潑寮忕殑浜哄伐鍗曚釜鍗曚釜鐨勭敓浜ч浂浠剁劧鍚庝竴姝ヤ竴姝ョ粍瑁呭仛錛屽ソ<BR>姣旀湁浜嗗伐涓氶潻鍛斤紝鐜板湪閮界敱鐢熶駭嫻佹按綰夸唬鏇夸簡銆傚瑕侀犱赴鐢版苯杞︼紝鍏堝埗瀹氭苯杞︾殑鏋勯犲鐢辮濺鑳庛佹柟<BR>鍚戠洏銆佸彂鍔ㄦ満緇勬垚銆傚啀浠ユ鏋勯犳爣鍑嗙敓浜т赴鐢版苯杞︾殑杞﹁儙銆佹柟鍚戠洏銆佸彂鍔ㄦ満銆傜劧鍚庤繘琛岀粍瑁呫傛渶鍚?BR>寰楀埌涓扮敯姹借濺錛?BR><BR>PROTOTYPE?鍗板埛鏈殑鍙戞槑錛氫互鍓嶅彧鑳戒復璐存墠鑳戒繚鎸佸拰鍒漢鐨勫瓧榪瑰熀鏈浉鍚岋紝鐩翠粠鍗板埛鎶鏈彂鏄庯紝<BR>浠庤屼繚璇佷簡澶嶅埗寰楀拰鍘熺墿涓妯′竴鏍鳳紱<BR><BR>SINGLETON?鍞竴錛氫互鍓嶆槸鍟嗘爣婊″ぉ椋烇紝鐩稿悓鐨勫晢鏍囬毦鍏嶉犳垚渚墊潈錛岀洿浠庢湁鍟嗘爣淇濇姢娉曞悗錛屽氨淇濊瘉<BR>浜嗕笉浼氬啀浜х敓絎浼佷笟浣跨敤鐩稿悓鐨勫晢鏍囷紱<BR>緇撴瀯鍨嬫ā寮?BR><BR>ADAPTER?闆嗕紬浜轟箣縐侊紝鎴愪竴宸變箣鍏細姝﹀綋媧懼紶涓変赴浼氬お鏋佹嫵錛屽皯鏋楁淳鏅虹┖澶у笀浼氶噾鍒氳埇鑻ユ帉錛屽<BR>鏋滀粬浠袱涓兘鎴愪負鎴戠殑甯堝倕錛屾垜灝辨棦浼氬お鏋佹嫵錛屽張浼氶噾鍒氳埇鑻ユ帉浜嗭紱<BR><BR>DECORATOR?闈掑嚭浜庤摑鑰岃儨浜庤摑錛氭褰撴淳寮犱笁涓頒細澶瀬鎷籌紝鏄垜甯堝倕錛屼粬鏁欎細浜嗘垜澶瀬鎷籌紝浣嗘垜鑷?BR>宸辮繕浼氱偣钂欏彜寮忔憯浜わ紝寮犱笁涓板嵈涓嶄細銆備簬鏄垜灝辨垚浜咲ECORATOR妯″紡鐨勫疄鐜幫紱<BR><BR>BRIDGE?鐧介┈闈為┈錛氶┈涔嬮鑹叉湁榛戠櫧錛岄┈涔嬫у埆鏈夊叕姣嶃傛垜浠鈥濊繖鏄┈鈥濆お鎶借薄錛岃鈥濊繖鏄粦鑹?BR>鐨勫叕椹濆張澶鏉匡紝鍙湁灝嗛鑹蹭笌鎬у埆鍜岄┈鍔ㄦ佺粍鍚堬紝鈥濊繖鏄紙榛戣壊鐨勬垨鐧借壊鐨勶級錛堝叕鎴栨瘝錛夐┈鈥?BR>鎵嶆樉寰楃伒媧昏岄閫革紝濡傛bridge妯″紡綺鵑珦寰楃煟銆?BR><BR>COMPOSITE?澶у鏃忥細瀛愬張鐢熷瓩錛屽瓩鍙堢敓瀛愶紝瀛愬瓙瀛欏瓩錛屾棤絀峰敖涔燂紝灝嗕紬澶氱悍鏉傜殑浜哄彛緇勭粐鎴愪竴涓?BR>鎸夎緢鍒嗘帓鍒楃殑澶у鏃忓嵆鏄妯″紡鐨勫疄鐜幫紱<BR><BR>FACADE?姹傚悓瀛樺紓錛氶珮涓瘯涓氶渶璇誨垵涓拰楂樹腑錛屽崥澹篃闇璇誨垵涓拰楂樹腑錛屽洜姝ゅ浗瀹跺皢鍒濅腑鍜岄珮涓櫘<BR>鍙婃垚涔濆勾鍒朵箟鍔℃暀鑲詫紱<BR><BR>FLYWEIGHT?涓鍔蟲案閫革細璁よ瘑涓夊崈姹夊瓧錛屽彲浠ュ簲浠樻棩甯歌涔︿笌鍐欏瓧錛屽彲瑙佸ご鑴戜腑瀛樺湪榪欎釜姹夊瓧搴撶殑<BR>閲嶈錛?BR><BR>PROXY?鍨傚笜鍚斂錛氱姽濡傛竻鏈濆悍鐔欏勾闂寸殑鍥涘ぇ搴滆嚕錛屽緢澶氭潈鍒╀笉鍦ㄧ殗甯濇墜閲岋紝蹇呴』閫氳繃杈呬綈澶ц嚕鍘?BR>鍔烇紱<BR><BR><BR>琛屼負妯″紡<BR><BR>CHAIN OF RESPONSIBLEITY?縐熸埧錛氫互鍓嶄負浜嗘壘鎴垮埌澶勬墦鍚紝鏁堢巼浣庝笖鎵句笉鍒板ソ鐨勬埧婧愩傜幇鍦ㄦ湁浜?BR>鎴垮眿涓粙錛屼簬鏄悜鎴垮眿涓粙鎻愬嚭縐熸埧璇鋒眰錛屼腑浠嬫彁渚涗竴涓悎閫傜殑鎴挎簮錛屾弧鎰忓垯涓嶅啀璇鋒眰錛屼笉婊℃剰<BR>緇х畫鐪嬫埧錛岀洿鍒版弧鎰忎負姝紱<BR><BR>COMMAND?鍊熷垁鏉浜猴細浠ュ墠鏄兂鏉璋佸氨鏉錛屼絾涓孌墊椂闂村悗棰嗘偀鍒幫紝闀挎浠ュ線蹇呭皢緇撲粐澶錛屼簬鏄亣<BR>鎵嬩粬浜猴紝鎸戞嫧浠栦漢涔嬮棿鐨勫叧緋諱粠鑰岃揪鍒拌嚜宸辯殑鐩殑錛?BR><BR>INTERPRETER?鏂囪█鏂囨敞閲婏細涓孌墊枃璦鏂囷紝灝嗗畠緲昏瘧鎴愮櫧璇濇枃錛?BR><BR>ITERATOR?璧跺敖鏉緇濓細涓涓竴涓殑鎼滅儲錛岀粷涓嶆斁鎺変竴涓紱<BR><BR>MEDIATOR?涓夎鍊猴細鏈潵鍗冨ご涓囩華鐨勫哄姟鍏崇郴錛屽拷鍑烘潵涓涓粙錛屽寘鎻藉叾涓鍒囷紝浜庢槸涓夎鍏崇郴鍙樻垚浜?BR>鐙珛鐨勪笁鏂規壘絎洓鏂逛腑浠嬬殑鍏崇郴錛?BR><BR>MEMENTO?鏈夌鍚屼韓錛氭垜鏈夊灝戯紝浣犲氨鏈夊灝戯紱<BR><BR>OBSERVER?鐪嬪畧鑰咃細涓鏃﹁鐪嬪畧鑰呮湁浠涔堝紓甯告儏鍐碉紝瀹氫細鍙婃椂鍋氬嚭鍙嶅簲錛?BR><BR>STATE?榪涘嚭鑷敱錛氬涓鎵囬棬錛岃兘榪涜兘鍑猴紝濡傛灉鏈夊緢澶氫漢闅忔椂榪涜繘鍑哄嚭蹇呭畾鏄懼緱鏉備貢鑰屽畨鍏紝濡備粖<BR>璁句竴淇濆畨闄愬埗鍏惰繘鍑猴紝濡傛鍚勪漢榪涘嚭鎵嶆樉寰楄鑼冿紱<BR><BR>STRATEGY?涔呯梾鎴愯壇鍖伙細濡備漢鐢熺梾鍙互鏈夊悇縐嶇棁鐘訛紝浣嗙粡榪囬暱鏈熸懜绱紝灝卞彲浠ユ葷粨鍑烘劅鍐掋佽偤鐥呫?BR>鑲濈値絳夊嚑縐嶏紱<BR><BR><BR>TEMPLATE METHOD??鐞嗚涓嶄竴瀹氳瀹炶返錛氭暀緇冪殑瀛︾敓浼氭父娉沖氨琛屼簡錛岃嚦浜庢暀緇冧細涓嶄細鍒欐棤鍏崇揣瑕侊紱<BR><BR>VISITOR?渚濇硶娌葷姜錛氬洜寮犱笁鏉浜鴻琚姝伙紝鏉庡洓鍋風獌瑕佽緗氭銆傜敱姝ゅ娍蹇呭埗瀹氬緗氬埗搴︼紝鏁呭埗瀹?BR>娉曞緥鍐欐槑鏉浜恒佹斁鐏佸伔紿冪瓑緗鍙椾粈涔堝緗氾紝緇忛氳繃鍚庨』鍙樺姩瑕佸皬銆備粖鍚庢湁浜虹姱緗笉綆℃槸璋侊紝鎸?BR>鍏辨潯渚嬪緗氬嵆鏄紝榪欏氨鏄闂呮ā寮忚癁鐢熺殑鍏ㄨ繃紼嬶紱   <BR><img src ="http://www.tkk7.com/yesjoy/aggbug/30615.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/yesjoy/" target="_blank">鈽厃esjoy鈽?/a> 2006-02-14 15:31 <a href="http://www.tkk7.com/yesjoy/articles/30615.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>璁捐妯″紡鐨勫熀紜http://www.tkk7.com/yesjoy/articles/30306.html鈽厃esjoy鈽?/dc:creator>鈽厃esjoy鈽?/author>Sat, 11 Feb 2006 14:57:00 GMThttp://www.tkk7.com/yesjoy/articles/30306.htmlhttp://www.tkk7.com/yesjoy/comments/30306.htmlhttp://www.tkk7.com/yesjoy/articles/30306.html#Feedback0http://www.tkk7.com/yesjoy/comments/commentRss/30306.htmlhttp://www.tkk7.com/yesjoy/services/trackbacks/30306.html璁捐妯″紡鍜岃璁″師鍒?/STRONG>錛?/SPAN>

    璁捐妯″紡鍜岃璁″師鍒欐槸瀵歸潰鍚戝璞$▼搴忚璁$殑涓涓叿浣撳簲鐢紝涓烘鎴戜滑棣栧厛闇瑕佸洖欏懼拰鎬葷粨涓涓嬮潰鍚戝璞$▼搴忚璁$殑涓浜涘熀鏈唴瀹癸紝鍚屾椂涔熸槸涓轟簡寮曞嚭璁捐妯″紡鍜岃璁″師鍒欍?/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>

     



    ]]>
    主站蜘蛛池模板: 亚洲乱码卡一卡二卡三| 亚洲精品成人区在线观看| 最近2019免费中文字幕视频三| 成人无码WWW免费视频| 国产亚洲精aa成人网站| 九九热久久免费视频| 在线免费观看亚洲| 国内一级一级毛片a免费| 亚洲欧美在线x视频| 亚洲人成人网站在线观看| 国产精品免费在线播放| 四虎影院在线免费播放| 国产免费区在线观看十分钟 | 亚洲精品高清国产麻豆专区| 亚洲中文字幕乱码一区| xxxxxx日本处大片免费看 | 全免费毛片在线播放| 一出一进一爽一粗一大视频免费的| 亚洲成在人天堂一区二区| 99视频在线精品免费观看6| jizz免费在线观看| 亚洲av无码片在线观看| 亚洲精品国偷自产在线| 日韩欧美一区二区三区免费观看 | 精品一区二区三区免费毛片爱| 亚洲av无码成人精品国产| 亚洲AV天天做在线观看| 国产精品免费一级在线观看| 中文字幕免费在线看线人| kk4kk免费视频毛片| 亚洲乱亚洲乱妇24p| 亚洲欧洲日韩国产综合在线二区| 亚洲成av人在线观看网站 | 最近免费中文字幕大全免费版视频| 亚洲中文字幕不卡无码| 国产亚洲综合视频| 亚洲男女性高爱潮网站| 亚洲av最新在线网址| 中文字幕亚洲无线码| 亚洲色偷偷狠狠综合网| 亚洲AV无码一区二三区|