今天看了郭神关于单例模式的一篇博客,讲的是通俗易懂,读完醍醐灌顶,若有所悟,虽然对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类创建的对象,这种原理或缓存的原理是什么??