Java设计模式之Singleton单例模式

来源:java认证发布时间:2012-11-12 12:48:42java认证视频

Singleton (单例模式)
         Intent :Ensure a class only has one instance , and provide a global point of access of it.
        很多时候我们要保证类的实例只有一个。我们可能在自己的代码中判断需要的类的实例有无,无就new一个。这样看似不错。问题是,你用到这个类的地方有n个,这样你就需要n个判断。为什么不把这个职责交给类本身呢?然后让类提供一个接口访问
代码实现:
pubpc class Singleton
{
private static Singleton singleton=null;
private Singleton()
{}
pubpc static Singleton instance()
{
if(singleton==null)
singleton = new Singleton();
return singleton
return singleton;
}
}
有无问题:碰上多线程怎么办?凉拌了。加锁吧,或者。。。前人总结的经验,有3中方法
1. 直接加锁
pubpc class Singleton
{
private static Singleton singleton=null;
private Singleton()
{}
pubpc static synchronized Singleton instance()
{
if(singleton==null)
singleton = new Singleton();
return singleton
return singleton;
}
}
2.早期实例化
pubpc class Singleton
{
private static Singleton singleton = new Singleton();
private Singleton();
pubpc static Singleton getInstance()
{
return singleton;
}
}
3.双重检测锁
pubpc class Singleton
{
private volatile static Singleton singleton=null;
private Singleton(){}
pubpc static Singleton getInstance()
{
if(singleton==null)
{  synchronized(Singleton.class)
{
singleton=new Singleton();
}
}
return singleton;
}

 

TAG: JAVA设计模式

 -5-3-1-+1+3+5

评分:0

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答