User.java
public class User {
private String name;
private int age;
private int id;
@Override
public String toString() {
return "{"+name+" , "+age+" , "+id+"}";
}
public User(String name, int age, int id) {
super();
this.name = name;
this.age = age;
this.id = id;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
UserManager.java
public interface UserManager {
public void addUser(User user);
public void delUser(User user);
public void queryUserByID(int id);
}
UserManagerImpl.java
public class UserManagerImpl implements UserManager {
@Override
public void addUser(User user) {
System.out.println("UserManagerImpl.addUser--->>name="+user.getName());
}
@Override
public void delUser(User user) {
System.out.println("UserManagerImpl.delUser--->>name="+user.getName());
}
@Override
public void queryUserByID(int id) {
System.out.println("UserManagerImpl.id--->>id="+id);
}
}
ProxyTest.java
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class ProxyTest implements InvocationHandler {
Object target;
public Object proxyObject(Object target) {
this.target = target;
return Proxy.newProxyInstance(target.getClass().getClassLoader(), target
.getClass().getInterfaces(), this);
}
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
Object ret = null;
System.out.println(method.getName());
for(int i=0;i<args.length;i++){
System.out.println(args[i]);
}
//执行方法并返回方法的返回值没有则返回null
ret = method.invoke(target, args);
return ret;
}
}
Client.java
public class Client {
public static void main(String[] args) {
User user = new User("小明", 22, 1);
UserManager userManager = (UserManager) new ProxyTest()
.proxyObject(new UserManagerImpl());
userManager.delUser(user);
}
}
执行结果:
delUser
{小明 , 22 , 1}
UserManagerImpl.delUser--->>name=小明