單例模式(飽漢式和餓漢式)
阿新 • • 發佈:2018-12-20
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; } }