/* 如果你定义了一个类,比如 class MyObject {} <br />
* 可以通过如下方法可以使该类成为单例模式<br />
* <br />
* MyObject obj = (MyObject)SingletonPool.get(MyObject.class);<br />
* <br />
* <br />
* 注意:该类必须要有一个无参数的构造函数<br />
*/
public final class SingletonPool {
private SingletonPool() {}
private static Map objects = new Hashtable();
/**
* 获取单例对象<br />
* 该类必须要有一个无参数的构造函数
* @comment
* @param objCls
* @return
*/
public static Object get(Class objCls) {
Object rtn = null;
if((rtn = objects.get(objCls)) != null) {
return rtn;
}
synchronized(SingletonPool.class) {
try {
Constructor ctor = objCls.getDeclaredConstructor(null);
ctor.setAccessible(true);
rtn = ctor.newInstance(null);
objects.put(objCls, rtn);
} catch (Exception e) {
log.error(e, e);
}
}
return rtn;
}
}