首先是代理目标接口
public interface UserManger {
public void addUser(String name);
}
接下来是实现目标接口的类
public class UserMangerImpl implements UserManger{
public void addUser(String name) {
System.out.println("addUser success");
}
}
其次是通用代理类
public class ProxyUtil implements InvocationHandler{
private Object targerObject;
public Object creatProxy(Object targetObject){
this.targerObject=targetObject;
return Proxy.newProxyInstance(targetObject.getClass().getClassLoader(), //返回一个目标对象的代理
targetObject.getClass().getInterfaces(), this);
}
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
check();//执行目标方法前的方法
Object o=method.invoke(targerObject, args);//执行目标类中的方法
return o;
}
private void check(){
System.out.println("check");
}
}
测试客户端类
public class Client {
public static void main(String[] args) {
ProxyUtil p= new ProxyUtil();//创建一个代理
UserManger us=(UserManger)p.creatProxy(new UserMangerImpl());//调用代理方法返回一个目标对象代理
us.addUser("zhang");//执行目标对象的方法
}
}