当前位置:首页 > 开发 > 编程语言 > JDK JVM > 正文

JDK的动态代理

发表于: 2015-05-29   作者:chou_qi   来源:转载   浏览次数:
摘要: 直接贴代码了, 先理解代理是怎么回事, 然后再看动态代理 1.接口 2.接口实现类 3.获取代理接口实现类的类 使用场景:拦截器,AOP 1.接口 public interface BookInterface { public void addBook(); } 2.接口实现类 public class Book implements BookInterf
直接贴代码了,
先理解代理是怎么回事,
然后再看动态代理

1.接口
2.接口实现类
3.获取代理接口实现类的类

使用场景:拦截器,AOP

1.接口
public interface BookInterface {
public void addBook();
}

2.接口实现类
public class Book implements BookInterface {

@Override
public void addBook() {
// TODO Auto-generated method stub
System.out.println("书增加方法调用");

}

}

3.代理类

public class BookProxy implements InvocationHandler {

//被代理对象
private Object target;

public BookProxy(Object target){
this.target = target;
}

//取得代理对象(代理的目的)
public Object bind(){
return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), this);
}

/*
* 通过代理对象调用方法(想要调用的方法)
* (non-Javadoc)
* @see java.lang.reflect.InvocationHandler#invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[])
*/
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
Object result  = null;
System.out.println("代理对象调用方法:前");
result = method.invoke(target,args);
System.out.println("代理对象调用方法:后");
return result;
}

}

4.运行Test

public class Test {
public static void main(String[] args){
Book book = new Book();
BookProxy proxy = new BookProxy(book);
//取得代理对象
BookInterface bookProxy = (BookInterface) proxy.bind();
bookProxy.addBook();//代理中通过调用类获取Method对象
}
}

很奇怪我的API中没有关于
Proxy.newProxyInstance()这个方法的介绍搞得我一直不理解动态代理是怎么实现的。

JDK的动态代理

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
jdk的动态代理是基于接口的,必须实现了某一个或多个任意接口才可以被代理 ,并且只有这些接口中的
1、 作用 为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接
要了解JDK动态代理,首先要了解代理,以及代理的用途,下面就稍微简单说一下。 什么是代理??? 先
spring容器通过动态代理再结合java反射思想可以使得方法调用更加简洁 一、动态代理概述: 与静态代
一.概念... 1 二.jdk的静态代理 三.jdk动态代理 四.cglib 动态代理 五.jdk动态和cglib动态代理
一.概念 代理是什么呢?举个例子,一个公司是卖摄像头的,但公司不直接跟用户打交道,而是通过代理
一.概念 代理是什么呢?举个例子,一个公司是卖摄像头的,但公司不直接跟用户打交道,而是通过代理
先来看一下思维导图: 对于JDK的动态代理,孔浩老师说学习的方法是把它记下来。 先写一个主题接口类
一、现实生活中的代理? 在现实生活中,我们常见的有服务器代理商、联想PC代理商、百事可乐、火车票
背景: 研究过设计模式的同胞们都知道代理模式可以有两种实现方案: 1.接口实现(或继承抽象类) 核
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号