首頁>技術>

作用:在應用程式中保證最多有一個例項。

好處:

提升執行效率。

實現資料共享。案例:application物件的有效範圍

懶漢式

面試時一般能手寫

例子:

把構造方法私有化。

其他類不能例項化這個物件。

程式碼:package com.wq;public class SingoTon {	//由於物件需要靜態方法呼叫,把方法設定為static	//由於物件是static,必須設定訪問許可權修飾符為private,如果是public 可以直接呼叫物件,不執行訪問入口	private static SingoTon  singoTon;	/** * 構造方法 * 方法名和類名相同 * 無返回值 *  *  * 其他類不能例項化 */  private SingoTon(){	}    /**   * 例項方法   * 例項方法必須透過物件呼叫   *    *    * 設定方法為靜態方法   *    *    * 多執行緒訪問下   * @return   */  public static SingoTon getInstance() {	  //新增邏輯,如果例項化過,直接返回	  if (singoTon==null) {				/*		 * 多執行緒情況下,可能出現if同時成立的情況,新增鎖		 */		synchronized (SingoTon.class) {			//雙重驗證			if (singoTon==null) {				singoTon=new SingoTon();			}					}	}	return singoTon;}}

測試類:

package com.wq.test;import com.wq.SingoTon;public class Test {  public static void main(String[] args) {	  SingoTon singoTon =SingoTon.getInstance();	  SingoTon singoTon1 =SingoTon.getInstance();	//如果為ture則為單例	System.out.println(singoTon==singoTon1);}}

結果:

為什麼叫懶漢式

物件只有被呼叫時才會去建立

餓漢式

由於添加了鎖

導致多執行緒等待---效率會低

使用餓漢式

解決了懶漢式中多執行緒訪問可能出現同一個物件和效率低問題

package com.wq;public class SingoTon {	//在類載入時會被例項化private static SingoTon  singoTon=new SingoTon();  private SingoTon(){}   public static SingoTon getInstance() {	 	return singoTon;}}
package com.wq.test;import com.wq.SingoTon;public class Test {  public static void main(String[] args) {	  SingoTon singoTon =SingoTon.getInstance();	  SingoTon singoTon1 =SingoTon.getInstance();	//如果為ture則為單例	System.out.println(singoTon==singoTon1);}}

當你選一種就可以

11
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 十分鐘搞定Apollo分散式配置中心動態重新整理資料庫配置