【单例】单例在全局变量中引用变成了多例
单例在编程中经常使用,但在全局变量中应用会出现一些问题。
?
例子:
public class Tst {public static void main(String[] args) {A.getInstance();}}class Glbl {static {System.out.println("In class GlblVars");}public static String log = "I love java.";public static A a = A.getInstance();}class A {static int instanceNum = 0;private A() {instanceNum ++;int n = instanceNum;System.out.println(n +" create instance A");System.out.println(Glbl.log);System.out.println(n +" create instance A done");}private static A instance;public static A getInstance() {if (instance == null) {System.out.println("In class A");instance = new A();}return instance;}}?
public class Tst {public static void main(String[] args) {A.getInstance();}}class Glbl {static {System.out.println("In class GlblVars");}public static String log = "I love java.";public static A a = A.getInstance();}class A {static {System.out.println("In class A");}static int instanceNum = 0;private A() {instanceNum ++;int n = instanceNum;System.out.println(n +" create instance A");System.out.println(Glbl.log);System.out.println(n +" create instance A done");}private static A instance = new A();public static A getInstance() { return instance;}}?
?
结果:
In class A1 create instance AIn class GlblVarsI love java.1 create instance A done
?