单例模式不单例

来源:互联网 发布:linux scp定义算法 编辑:程序博客网 时间:2024/05/17 06:17

一个最简单的单例:

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;      }  }

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

原创粉丝点击