Java反射配置文件工厂方法综合实例
配置文件读取类:
package hyhref;
import java.io.File;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
importjavax.xml.soap.Node;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
publicclassReadXml {
publicstatic Object GetXmlObject(){
Objecto=null;
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();//单例模式
try {
DocumentBuilderbuilder=factory.newDocumentBuilder();
Documentdoc=builder.parse(new File("src\\hyhref\\NewFile.xml")); //加载文档(具体的目录请自行修改)
NodeListn1=doc.getElementsByTagName("node"); //得到文档下的 node节点
org.w3c.dom.Nodeclassnode= n1.item(0).getFirstChild();//获取node中的第一个节点
Stringname=classnode.getNodeValue(); //获取节点的数据
Class<?>opera=Class.forName("hyhref."+name); //从配置文件加载类
o=opera.newInstance(); //实例化
}catch(ParserConfigurationException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}catch(SAXException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}catch(IOException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
finally{
return o;
}
}
}
配置文件:
<?xmlversion="1.0"encoding="UTF-8"?>
<Result>
<node>IOperationSub</node>
</Result>
工厂方法源代码:
http://www.worlduc.com/blog.aspx?bid=4023675
主类:
publicstaticvoidmain(String[] args) {
//TODO Auto-generated method stub
try {
IOperation factory=(IOperation)ReadXml.GetXmlObject();//从配置文件动态加载一个类
Operation oper=factory.CreateOperation();
oper.numA=100;
oper.numB=200;
System.out.println(oper.GetResult());
}catch(Throwable e) {
System.err.println(e);
}
}