package com.cattong.weibo; import java.lang.reflect.Constructor; import com.cattong.commons.LibResultCode; import com.cattong.commons.LibRuntimeException; import com.cattong.commons.Logger; import com.cattong.commons.ServiceProvider; import com.cattong.commons.http.auth.Authorization; public class WeiboFactory { public static Weibo getInstance(Authorization auth) { if (auth == null) { throw new LibRuntimeException(LibResultCode.E_PARAM_NULL); } String packageName = WeiboFactory.class.getPackage().getName(); ServiceProvider sp = auth.getServiceProvider(); packageName += ".impl." + sp.toString().toLowerCase(); packageName += "." + sp.toString(); Weibo weiboInstance = null; Class<?>[] constructorParams = {Authorization.class}; try { //Class<?> weiboInstanceClass = ScanPackageUtil.getAbstractExtendClass(packageName, Weibo.class); Class<?> weiboInstanceClass = Class.forName(packageName); Constructor<?> constructor = weiboInstanceClass.getConstructor(constructorParams); weiboInstance = (Weibo)constructor.newInstance(auth); } catch (Exception e) { Logger.error("WeiboFactory:{}", sp, e); } return weiboInstance; } }