码迷,mamicode.com
首页 > 其他好文 > 详细

动态代理

时间:2017-06-30 12:23:39      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:ade   一个   mil   抽象方法   oca   动态代理   this   dynamic   print   

软件152 陈卓

 动态代理

1.概念

 

Java动态代理类位于Java.lang.reflect包下,一般主要涉及到以下两个类:

(1)Interface InvocationHandler:该接口中仅定义了一个方法Object:invoke(Object obj,Method method,Object[] args)。在实际使用时,第一个参数obj一般是指代理类,method是被代理的方法,args为该方法的参数数组。这个抽象方法在代理类中动态实现。WIN

(2)Proxy:该类即为动态代理类,作用类似于上例中的ProxySubject

 

2.DynamicProxy.java核心代码:

 

package org.proxy.proxyClass;

import java.lang.reflect.InvocationHandler;

import java.lang.reflect.Method;

import java.lang.reflect.Proxy;

 

//动态代理类

public class DynamicProxy implements InvocationHandler{

    private Object obj;

    public Object bind(Object obj){

        this.obj=obj;

        return Proxy.newProxyInstance(obj.getClass().getClassLoader(),

                obj.getClass().getInterfaces(), this);

    }

    public Object invoke(Object proxy, Method method, Object[] objs)

            throws Throwable {

        Object result=null;

        try{

            before();

            result=method.invoke(obj, objs);

            after();

        }catch(Exception e){

            e.printStackTrace();

        }

        return result;

    }

    public void before(){

        System.out.println("订机票,订酒店,送老板");

        }

    

    public void after(){

        System.out.println("订机票,退酒店,接老板");

    }

}

3.运行结果如图

技术分享

 

动态代理

标签:ade   一个   mil   抽象方法   oca   动态代理   this   dynamic   print   

原文地址:http://www.cnblogs.com/goodguy4396/p/7097890.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!