从两个Main类中访问Java访问单例类的实例
从两个Main类中访问Java访问单例类的实例
package Test; public class SingleObject { //创建SingleObject对象 private static SingleObject instance = null; public String msg = "1"; //将构造函数设为私有,以防止此类被实例化 private SingleObject(){} //获取唯一可用的对象 public static SingleObject getInstance(){ if(instance!=null){ }else{ instance = new SingleObject(); } return instance; } } package Test; public class Main1 { public static void main(String[] args) { SingleObject object = null; while(true){ object = SingleObject.getInstance(); object.msg = "2"; System.out.println(object.msg); //输出为2 } } }
\n
\n
import SingleObject.*; public class Main2{ public static void main(String[] args) { //这里创建了一个新的实例 SingleObject object = SingleObject.getInstance(); //输出为1 System.out.println(object.msg); } }
\n编译完Main1和Main2之后
\n
- \n
- 我运行Main1 - 它将继续运行并更新变量msg为\"2\" [ 这里创建了SingletonObject类的实例 ]
- 然后我运行Main2。但是这里创建了SingleObject类的新实例。所以我得到的输出是\"1\"。根据单例设计模式,当我运行Main2时应该获得在Main1中创建的实例,为什么Main2会创建新的SingletonObject实例?
\n
\n