package org.westos.使用反射做动态代理;
import java.lang.reflect.Proxy;
/*
*动态代理
* */
public class Demo {
public static void main(String[] args) {
//创建对象
Userdao ud = (Userdao)new Userdaoimpl();
// 针对UserDao对象ud给它生产一个代理对象
// 调用处理程序,接口实现类中产生代理
MyInvocationHandler handler = new MyInvocationHandler(ud);
// public static Object newProxyInstance(ClassLoader loader,
// Class<?>[] interfaces,
// InvocationHandler h)
// 返回一个指定接口的代理类实例,该接口可以将方法调用指派到指定的调用处理程序。
Userdao ud2 =(Userdao)Proxy.newProxyInstance(ud.getClass().getClassLoader(),
ud.getClass().getInterfaces(),
handler);
ud2.add();
ud2.delete();
ud2.find();
ud2.update();
}
}
package org.westos.使用反射做动态代理;
public interface Userdao {
//增加功能
public void add();
//删除功能
public void delete();
//查询功能
public void find();
//修改功能
public void update();
}
package org.westos.使用反射做动态代理;
public class Userdaoimpl implements Userdao {
@Override
public void add() {
System.out.println("添加功能");
}
@Override
public void delete() {
System.out.println("删除功能");
}
@Override
public void find() {
System.out.println("查询功能");
}
@Override
public void update() {
System.out.println("修改功能");
}
}