JAVA 动态代理

被代理类

package com.chirs.Demo2;

public class UserServiceImpl implements UserServices {

public void add() {
System.out.println("增加了一个用户");
}

public void delete() {
System.out.println("删除了一个用户");
}

public void update() {
System.out.println("修改了一个用户");
}

public void query() {
System.out.println("查询了一个用户");
}
}

  

  代理类

package com.chirs.Demo3;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class ProxyInvocationHandle implements InvocationHandler {
// 被代理的接口
private Object object;

public void setObject(Object object) {
this.object = object;
}

// 获得代理类
public Object getProxy() {
return Proxy.newProxyInstance(this.getClass().getClassLoader(),
object.getClass().getInterfaces(), this);
}

// 调用处理程序
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
log(method.getName());
Object result = method.invoke(object, args);
return result;
}

public void log(String msg) {
System.out.println("调用了 " + msg + " 方法");
}
}

调用类
package com.chirs.Demo3;

import com.chirs.Demo2.UserServiceImpl;
import com.chirs.Demo2.UserServices;

public class Client {
public static void main(String[] args) {
// 真实角色
UserServiceImpl userService = new UserServiceImpl();
// 代理角色 不存在
ProxyInvocationHandle pih = new ProxyInvocationHandle();
// 设置要代理的对象
pih.setObject(userService);
UserServices proxy = (UserServices) pih.getProxy();
proxy.delete();
}
}
原文地址:https://www.cnblogs.com/wooroc/p/13558762.html