單例設計模式(懶漢式)(餓漢式)
阿新 • • 發佈:2018-12-20
單例設計模式
1、 作用:在應用程式中保證最多隻能有一個例項
2、好處:
2.1 提升執行效率
2.2 實現資料共享 案例:application物件
3、懶漢式
3.1 物件只有被呼叫時才去建立
3.2 代理例項:
public class SingleTon { /** * 其他類不能通過new 例項化這個類物件 * * 對外提供訪問入口 */ private void SingleTon(){} /** * 由於物件需要被靜態方法呼叫,把方法設定為static * * 由於物件是static,必須要設定訪問許可權修飾符為private。如果是public,就不執行訪問入口 **/ private static SingleTon sing; /** * 例項方法,例項方法必須通過物件呼叫 * * 設定方法為靜態方法 * * 多執行緒訪問下 * * @return */ public static SingleTon getInstance(){ //新增邏輯如果例項化過,直接返回 if(sing==null){ /** * 多執行緒訪問下,可能出現if同時成立的情況,新增鎖*/ synchronized (SingleTon.class) { /** * 雙重驗證 */ if(sing==null){ sing=new SingleTon(); } } } return sing; } }
3.3 由於添加了鎖,所以導致效率低
4、餓漢式
4.1 解決了懶漢式中多執行緒訪問可能出現同一物件和效率低問題
public class SingleTon { private void SingleTon(){} //在類載入時進行例項化 不會出現多執行緒訪問情況 private static SingleTon sing =new SingleTon(); public static SingleTon getInstance(){ return sing; } }