今天看了郭神關於單例模式的一篇博客,講的是通俗易懂,讀完醍醐灌頂,若有所悟,雖然對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類創建的對象,這種原理或緩存的原理是什麼??