單例模式之懶漢模式與餓漢模式

大家好我是菜鳥阿貴
今天和大家分享單例模式之懶漢模式和餓漢模式

1:首先說懶漢模式,顧名思義,就是很懶,他不會首先就創建對象,而是有一個判斷纔回去創建愛你實例化對象,例如:

public class TestSinton {
    //懶漢式(線程不安全)(除非在公共方法上面添加鎖修飾)
    //不先創建實例對象,而是通過判斷纔會創建實例對象,
    //因爲一開始實例化對象是null,所以沒有私有化構造器
    private static  TestSinton sinton = null;

    public  static  TestSinton getInstance(){
        if (sinton == null){
            sinton = new TestSinton();
        }
        return  sinton;
    }

2:上面的代碼我們可以看出來,首先會定義實例化對象爲nul,只有在if判斷中才會去創建實例化對象並且返回!

3:餓漢式
1:顧名思義就是在類加載的時候就創建好了實例化對象:

    //餓漢式(線程安全)
    //在一開始就實例化對象,實例化單例對象,擁有私有化構造器,一個公共的方法供別人調用!
    private  static final  TestSinton test = new TestSinton();

    private  TestSinton(){

    }
     public  static TestSinton getInstance1(){
        return  test;
     }

2:上面的代碼我們可以看出來:
1:餓漢式是在類加載式就提前實例化對象,並且擁有讓外部調用不到的私有化構造器,只提供一個公共的方法供他人調用!

4:注意的是:如果懶漢式沒有加鎖(synchronized)關鍵字進行修飾的時候,會導致線程不安全!
2:而餓漢式是線程安全的,因爲一開始他就創建好了實例化對象不可改變!

-----------共勉-------------

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章