這纔是正在的Java單例模式!

今天看了郭神關於單例模式的一篇博客,講的是通俗易懂,讀完醍醐灌頂,若有所悟,雖然對Java的類對象的這一塊還是不清楚,就單例模式而言,這種寫法已經是堪稱完美了。
郭神博客地址:http://blog.csdn.net/guolin_blog/article/details/8860649

下面試自己的筆記:

public class Text {

    //聲明一個私有的靜態類的對象
    private static Text text;

    /**
     * 私有化構造方法,在Text類的外部無法通過new來創建對象
     */
    private Text(){

    }

    /**
     * 對外提供唯一一個獲取Text類對象的方法
     * synchronized放在方法類部
     * 和public synchronized Text getInstance(這種寫法性能一樣不好,每次在執行getInstance方法的時候
     * 都會受到同步鎖的影響 
     *
     * @return
     */
    public Text getInstance(){
        //在同步鎖執行之前,加一層判斷,只在沒有發現text對象的時候同步一下,優化了性能
        if (text==null){
            synchronized (Text.class){
                //同步之後依然沒有Text類的對象才創建一個Text對象
                if (text==null){
                    text=new Text();
                }
            }
        }

        return text;
    }
}

上面已經註釋的很詳細了,這裏就不多說了,但有一點有個疑問,就是說:如果在A類中創建一個Text對象,在B類中爲什麼可以拿到A類創建的對象,這種原理或緩存的原理是什麼??

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