zoukankan      html  css  js  c++  java
  • JDK动态代理

     JDK动态代理

     JDK动态代理主要涉及到java.lang.reflect包中的两个类:Proxy和InvocationHandler。

        InvocationHandler是一个接口,通过实现该接口定义横切逻辑,并通过反射机制调用目标类的代码,

    动态将横切逻辑和业务逻辑编制在一起。

         Proxy利用InvocationHandler动态创建一个符合某一接口的实例,生成目标类的代理对象。
         缺点:必须要实现一个或多个接口,一个代理类只能服务一个接口,只针对实现了接口的类

    1.接口类 mainFunction

    package com.tang.DynamicProxyImp;
    public interface mainFunction {
    public String message();
    }


    2.业务类 ServiceImp(实现mianFunction接口)


    package com.tang.DynamicProxyImp;
    public class ServiceImp implements mainFunction{
    @Override
    public String message() {
    // TODO Auto-generated method stub
    return "jarrem";
    }

    }


    3.代理类 DynamicProxy

    package com.tang.DynamicProxyImp;
    import java.lang.reflect.InvocationHandler;
    import java.lang.reflect.Method;
    //InvocationHandler是代理实例的调用处理程序 实现的接口
    public class DynamicProxy implements InvocationHandler {
    private Object object;
    public DynamicProxy(Object object){
    this.object=object;
    }
    //实现加强
    @Override
    public Object invoke(Object proxy, Method method, Object[] args)
    throws Throwable {
    Object invoke = method.invoke(object, args);
    return ((String)invoke).toUpperCase();
    }
    }


    4.测试类 MyTest

    package com.tang.DynamicProxyImp;
    import java.lang.reflect.Proxy;
    public class MyTest {
    public static void main(String args[]){
    mainFunction mainfunction=new ServiceImp();
    DynamicProxy dynamicProxy = new DynamicProxy(mainfunction);
    //返回一个指定接口的代理类实例,该接口可以将方法调用指派到指定的调用处理程序。
    mainFunction proxy=(mainFunction) Proxy.newProxyInstance(
    mainfunction.getClass().getClassLoader(),// 定义代理类的类加载器
    mainfunction.getClass().getInterfaces(),    //代理类要实现的接口列表
    dynamicProxy // 指派方法调用的调用处理程序
    );
    String message = proxy.message();
    System.out.println(message);
    }
    }

  • 相关阅读:
    ListView的item中EditText编辑(或者其他控件)修改本行数据
    C#:MVC引用Log4Net生成错误日志
    Web Developer教程
    EditPlus高级使用技巧(附视频、课件、代码下载)
    jQuery入门篇
    网摘系统架构
    BugFree 2.0使用帮助
    使用 WebDeployment Project 视频
    BugFreeHelper 2.2 For BugFree2.0(RTM)
    FireFox3推荐安装附加组件Top10(附官方主页和下载地址)
  • 原文地址:https://www.cnblogs.com/jarrem/p/5836601.html
Copyright © 2011-2022 走看看