/**
*
*/
package cn.thcic;
import java.util.HashMap;
import java.util.Map;
/**
* 登记式单例模式
*
* by Zhiwang Zhang on 2014年7月18日
*/
public class Test103 {
// 私有静态的“登记单”
private static Map<String, Test103> registList = new HashMap<String, Test103>();
// 静态匿名内部类,用于实例化本类,并放到“登记单”中
static {
Test103 instance = new Test103();
registList.put(instance.getClass().getName(), instance);
}
// 被保护的无参构造方法
protected Test103() {
}
// 公有的静态返回唯一实例的方法
public static Test103 getInstance(String name) {
if (name == null) {
name = Test103.class.getName();
}
if (registList.get(name) == null) {
try {
registList.put(name, (Test103) Class.forName(name)
.newInstance());
} catch (Exception e) {
e.printStackTrace();
}
}
return registList.get(name);
}
// <--------以下为测试代码---------->
public static void main(String[] args) {
Test103 test103 = Test103.getInstance(null);
test103.func();
Test103 test103Sec = Test103.getInstance("cn.thcic.Test103");
Test103 test103thir = Test103.getInstance("cn.thcic.Test103");
if (test103Sec == test103thir) {
System.out.println("为同一实例!");
}
}
public void func() {
System.out.println("实例化成功!");
}
}