zoukankan      html  css  js  c++  java
  • 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();
    }
    }
  • 相关阅读:
    信号的阻塞
    善用布尔值
    多线程
    手机号码合理性的判断
    P(n,x)实现
    兄弟分钱、海盗分赃
    简单四则运算的实现
    模板技术
    合并字符串
    交换机和路由器比较
  • 原文地址:https://www.cnblogs.com/wooroc/p/13558762.html
Copyright © 2011-2022 走看看