觉得这是近期写得比较好的代码。
下面代码利用反射机制,根据不同的class将ParseTagPlugin接口实现多态,并加入缓存。
private Map<String, ParseTagPlugin> metaPlugin = new HashMap<String, ParseTagPlugin>();
private ParseTagPlugin getMetaPlugin(String classPath) {
ParseTagPlugin parseTagPlugin = metaPlugin.get(classPath);
if (parseTagPlugin != null) {
return parseTagPlugin;
} else {
try {
Class<? extends ParseTagPlugin> parserClass = (Class<? extends ParseTagPlugin>) Class.forName(classPath);
if (parserClass != null) {
parseTagPlugin = parserClass.newInstance();
}
} catch (Exception e) {
e.printStackTrace();
logger.warn("plugin load error");
}
metaPlugin.put(classPath, parseTagPlugin);
}
return parseTagPlugin;
}