1. 程式人生 > >單例模式(飽漢式和餓漢式)

單例模式(飽漢式和餓漢式)

1.餓漢式

/**
 * 飽漢式單例模式(quick load)
 * 條件:1.建構函式私有化
 *      2.有一個靜態的物件(類載入時即建立且執行緒安全)
 * 特點: 建立物件方便,但是有可能造成物件浪費
 */
public class SingletonClass1 {
   private SingletonClass1 singletonClass = new SingletonClass1();

   private  SingletonClass1() {

   }

   public SingletonClass1 getInstanse() {
      return singletonClass;
   }
}

2.飽漢式

/**
 * 餓漢式單例模式
 * 條件:1.構造方法私有化
 *      2.建立一個成員例項
 *      3.建立一個獲取例項的方法,但是方法是需要同步的(防止併發操作)
 * 特點:可以延遲載入,等到真正需要的時候再建立物件;缺點是併發量多時獲取物件時慢的(synchronized)
 */
public class SingletonClass2 {
   private SingletonClass2 singletonClass;

   private SingletonClass2() {

   }

   public synchronized SingletonClass2 getInstanse() {
      if(null == singletonClass) {
         singletonClass = new SingletonClass2();
      }
      return singletonClass;
   }
}