单例模式的测试数据 (一)

2014-11-24 10:41:15 · 作者: · 浏览: 0

我用debug模式测试了两种单例模式的执行情况:


第一种:


[java]
public class TestSingleTon1 {

private static TestSingleTon1 singleton1 = null;

public TestSingleTon1(){
//TODO
System.out.println("constructor methord...");

}

public static synchronized TestSingleTon1 getInstance(){
System.out.println("get instance methord...");
if(singleton1 == null){
singleton1 = new TestSingleTon1();
}
return singleton1;
}
}

public class TestSingleTon1 {

private static TestSingleTon1 singleton1 = null;

public TestSingleTon1(){
//TODO
System.out.println("constructor methord...");

}

public static synchronized TestSingleTon1 getInstance(){
System.out.println("get instance methord...");
if(singleton1 == null){
singleton1 = new TestSingleTon1();
}
return singleton1;
}
}
第二种:


[java]
public class TestSingleTon2 {

private static TestSingleTon2 singleton2 = new TestSingleTon2();

public TestSingleTon2(){
//TODO
System.out.println("constructor methord...");
}

public static TestSingleTon2 getInstance(){
System.out.println("get instance methord...");
return singleton2;
}
}

public class TestSingleTon2 {

private static TestSingleTon2 singleton2 = new TestSingleTon2();

public TestSingleTon2(){
//TODO
System.out.println("constructor methord...");
}

public static TestSingleTon2 getInstance(){
System.out.println("get instance methord...");
return singleton2;
}
}
测试程序:


[java]
public class TestMain {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("=====TestSingleTon1 wrong test=====");
TestSingleTon1 single1 = new TestSingleTon1();
System.out.println((single1 == null) + " " + single1.hashCode());
TestSingleTon1 single2 = new TestSingleTon1();
System.out.println((single2 == null) + " " + single2.hashCode());
TestSingleTon1 single3 = single2.getInstance();
System.out.println((single3 == null) + " " + single3.hashCode());

System.out.println("=====TestSingleTon1 right test=====");
TestSingleTon1 single1_1 = TestSingleTon1.getInstance();
System.out.println((single1_1 == null) + " " + single1_1.hashCode());
TestSingleTon1 single2_1 = TestSingleTon1.getInstance();
System.out.println((single2_1 == null) + " " + single2_1.hashCode());

System.out.println("=====TestSingleTon2 wrong test=====");
TestSingleTon2 single4 = new TestSingleTon2();
System.out.println((single4 == null) + " " + single4.hashCode());
TestSingleTon2 single5 = new TestSingleTon2();
System.out.println((single5 == null) + " " + single5.hashCode());
TestSingleTon2 single6 = TestSingleTon2.getInstance();
System.out.println((single6 == null) + " " + single6.hashCode());

System.out.println("=====TestSingleTon2 right test=====");
TestSingleTon2 single4_1 = TestSingleTon2.getInstance();
System.out.println((single4_1 == null) + " " + single4_1.hashCode());
TestSingleTon2 single5_1 = TestSingleTon2.getInstance();