单l例模式

这几天一直在学习设计模式,看到访问者模式有点不太理解,上javaeye搜索到兽王Rjx2008的博客,发现不少好东西。
先看了个常见的单例模式,刚接触设计模式买了本大话设计模式,讲到单例模式时关于多线程,用了双重检查锁DCL,不过在兽王的博客里对其否定了,来看看兽王是怎么讲解的吧。
[url=http://rjx2008.iteye.com/blog/342474#comments]不容易掌握的单例模式[/url]


小知识:单例模式有两种,饱汉、饿汉。顾名思义饿汉是饥不择食,强行创建,而饱汉则会挑挑食。

//饿汉式
Class A{

private static A a=new A();

private A(){}

public A getA(){

return a;

}

}


//饱汉式
class B{

private static B b;

private B(){}

public B getB(){

if(b!=null){

return b;

}else{

b=new B();

retrun b;

}

}

}



兽王对多线程情况下单例迷失应用的处理是:
 public class Singleton {  

private Singleton(){

}
//静态内部类
static class SingletonInner{
static Singleton instance = new Singleton();
}
public static Singleton getInstance(){
return SingletonInner.instance;
}
}


原因:使用静态内部类!它是由一个叫Bob Lee的人写下来的(最初忘记了是哪两个人提出)。在加载singleton时并不加载它的内部类SingletonInner,而在调用 getInstance()时调用SingletonInner时才加载SingletonInner,从而调用singleton的构造函数,实例化 singleton,从而在不需要同步的情况下,达到延迟初始化的效果。


文中的内容均是兽王Rjx2008的出品,[url=http://rjx2008.iteye.com/blog/340083]链接[/url]

你可能感兴趣的:(设计模式,多线程,Blog)