关闭

第三条 Singleton 模式

标签: singleton
104人阅读 评论(0) 收藏 举报
分类:

java 中 常用到的一种设计模式就是单利模式,常见的两种一种是懒汉式,一种是饿汉式


public class Singleton {


private static Singleton single = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return single;
}
}

和 

public class Singleton {

private static Singleton single = null;
private Singleton(){}
public static Singleton getInstance(){
if(single == null){
single = new Singleton();
}
return single;
}
}

懒汉式上述代码有个多线程并发问题,常见改进方法就是加入同步锁

public class Singleton {


private static Singleton single = null;


private Singleton() {
}


public static Singleton getInstance() {
if (single == null) {
synchronized (Singleton.class) {
if (single == null) {
single = new Singleton();
}
}
}
return single;
}
}



正常情况下,上述代码够用。但如果Singleton 类需要可序列化,仅仅在类上加入 implements Serializable 是不够的,java 提供了一个readResolve方法,

防止反序列化时创建新的实例。

private Object readResolve(){

return single ;

}


从 java 1.5发行版本,实现单利还有一种枚举法:

 public enum Singleton {  
    single ;  
   public void whateverMethod() {  
    }  
 }  

这种写法是effective java 该书的作者提出的,很有水平。实际生活中不常见。


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:5830次
    • 积分:481
    • 等级:
    • 排名:千里之外
    • 原创:45篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类