课后作业:
1、 动态代理模式。
2、接口式变成的原理。
package test;
/*
* 接口
*
*/
public interface IMessage {
public String queryMessage(int id);
}
package test;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
/*
* 事务类
*/
public class MessageHandler implements InvocationHandler {
Class<?> object;
public MessageHandler(Class<?> object) {
super();
this.object = object;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
// TODO Auto-generated method stub
System.out.println("接口名:"+object.getName());
System.out.println("方法名:"+method.getName());
return null;
}
}
package test;
import java.lang.reflect.Proxy;
import com.sun.org.apache.bcel.internal.generic.NEW;
/*
* 创建并返回代理实例
*/
public class SqlSesssion {
@SuppressWarnings("unchecked")
<T> T getMapper(Class<T> class1){
Object object=null;
MessageHandler mHandler=new MessageHandler(class1);
object=Proxy.newProxyInstance(class1.getClassLoader(), new Class[]{class1}, mHandler);
return (T)object;
}
}
package test;
/*
* 测试类
*/
public class Test {
public static void main(String[] args){
System.out.println("加载配置信息");
System.out.println("通过加载配置信息加载一个代理工厂的Map");
System.out.println("这个Map存放的是接口class和对应的代理工厂");
SqlSesssion ss=new SqlSesssion();
IMessage iMessage=ss.getMapper(IMessage.class);
iMessage.queryMessage(0);
}
}
作业,模拟接口编程的原理过程
接口式编程作业: