接口User Service:
public interface UserService {
void add();
void delete();
void update();
void select();
}
实现类UserServiceImpl:
public class UserServiceImpl implements UserService {
@Override
public void add() {
System.out.println("增加了一个用户");
}
@Override
public void delete() {
System.out.println("删除了一个用户");
}
@Override
public void update() {
System.out.println("修改了一个用户");
}
@Override
public void select() {
System.out.println("查询了一个用户");
}
}
ProxyInvocationHandler:
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class ProxyInvocationHandler implements InvocationHandler {
private UserService userService;
public void setUserService(UserService userService) {
this.userService = userService;
}
public Object getProxy(){
return Proxy.newProxyInstance(this.getClass().getClassLoader(),userService.getClass().getInterfaces(),this);
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
Object res= method.invoke(userService,args);
return res;
}
}
测试:
public class MyTest {
public static void main(String[] args) {
//真实角色
UserServiceImpl userService=new UserServiceImpl();
//new一个代理的调用处理器
ProxyInvocationHandler pih=new ProxyInvocationHandler();
//设置要代理的对象
pih.setUserService(userService);
//动态生成代理类
UserService proxy= (UserService) pih.getProxy();
proxy.select();
proxy.add();
}
}