码迷,mamicode.com
首页 > 其他好文 > 详细

框架学习之路一

时间:2018-11-14 01:01:07      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:instance   ons   方法调用   重写   cto   eva   const   saxreader   block   

学习工作当中用到了那么多的框架,难免会想搞清楚这些框架的底层到底是怎样实现的,借此机会从简单的写起,尝试着去实现一个框架

 

一,通过解析xml,获取其中的字段,用反射技术调用类中的方法

 

技术:dom4j,java反射

1,定义一个接口

package com.epro.framework;

public interface Ihello {
public void sayHello();
}

2,实现类

package com.epro.framework;

public class HelloJava implements Ihello{

@Override
public void sayHello() {
// TODO Auto-generated method stub
System.out.println("hello Java!!!!!!");
}

}

------------------------------------------------------------------------

package com.epro.framework;

public class HelloWorld implements Ihello{

@Override
public void sayHello() {
// TODO Auto-generated method stub
System.out.println("hello World!!!!!!!!!1");
}

}

 

3,配置文件mybean.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans>
<bean id="helloWorld" class="com.epro.framework.HelloWorld"></bean>
<bean id="helloJava" class="com.epro.framework.HelloJava"></bean>
</beans>

 

4,写一个主方法调用

package com.epro.framework;

import java.io.File;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class TestFrameWork {
public static void main(String[] args) {
SAXReader saxreader=new SAXReader();
try {
Document document=saxreader.read(new File("src/mybean.xml"));
Element rootElement=document.getRootElement();
Iterator iter=rootElement.elementIterator();

while(iter.hasNext()){
Element element=(Element) iter.next();
String myClassName=element.attributeValue("class");
Class clazz=Class.forName(myClassName);
//这个方法写在接口里,实现类实现这个接口就一定能调用到这个方法
Method method=clazz.getMethod("sayHello", null);
Constructor contructor=clazz.getConstructor();
Object obj=contructor.newInstance();
method.invoke(obj, null);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

 

这样只要新增实现类实现Ihello接口,重写其中的方法,并配置到mybean.xml,不用修改主方法就能自动调用到。

框架学习之路一

标签:instance   ons   方法调用   重写   cto   eva   const   saxreader   block   

原文地址:https://www.cnblogs.com/xixiyunan/p/9955584.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!