欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

单例模式不单例

程序员文章站 2022-07-13 23:54:28
...

一个最简单的单例:

public class Singleton {  
    private Singleton() {}  
    private static Singleton single=null;  
    //静态工厂方法   
    public static Singleton getInstance() {  
         if (single == null) {    
         
         
             return new Singleton();  
             
             
             
         }    
        return single;  
    }  
}

错误原因:

if (single == null) {    
         
             return new Singleton();  
             
         }

这个地方直接return了一个实例

虽然判断了属性中的单例是不是为空

但是实例化后没有赋值给属性单例

所以一直为空,每次都会去实例化一个新的

这样就不是单例了

改正

public class Singleton {  
    private Singleton() {}  
    private static Singleton single=null;  
    //静态工厂方法   
    public static Singleton getInstance() {  
         if (single == null) {    
             single = new Singleton();  
         }    
        return single;  
    }  
}

实例化然后赋值给属性就可以了。