java动态代理机制 java知识学习_佛山达内Java培训

佛山Java培训
达内佛山中心

185-8926-6248

热门课程

java动态代理机制 java知识学习

  • 时间:2018-05-31 17:38
  • 发布:java培训
  • 来源:达内新闻

java动态代理机制的出现,使得java开发人员不用手工编写代理类,只要简单地指定一组接口及委托类对象,便能动态地获得代理类。

java模式

代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。

为了保持行为的一致性,代理类和委托类通常会实现相同的接口,所以在访问者看来两者没有丝毫的区别。通过代理类这中间一层,能有效控制对委托类对象的直接访问,也可以很好地隐藏和保护委托类对象,同时也为实施不同控制策略预留了空间,从而在设计上获得了更大的灵活性。Java 动态代理机制以巧妙的方式实践了代理模式的设计理念

java动态代理机制特点

如果所代理的接口都是public的,那么它将被定义在顶层包(即包路径为空),如果所代理的接口中有非public的接口(因为接口不能被定义为 protect 或 private,所以除 public 之外就是默认的 package 访问级别),那么它将被定义在该接口所在包(假设代理了com.ibm.developerworks 包中的某非 public 接口 A,那么新生成的代理类所在的包就是 com.ibm.developerworks),这样设计的目的是为了保证动态代理类不会因为包管理的问题而无法被成功定义并访问;

类对象

首先是确定代理类所在的包,其原则如前所述,如果都为 public 接口,则包名为空字符串表示顶层包;如果所有非 public 接口都在同一个包,则包名与这些接口的包名相同;如果有多个非 public 接口且不同包,则抛异常终止代理类的生成。确定了包后,就开始生成代理类的类名,同样如前所述按格式“$ProxyN”生成

java代理类推演

分析了 Proxy 类的源代码,相信在读者的脑海中会对java动态代理机制形成一个更加清晰的理解,但是,当探索之旅在sun.misc.ProxyGenerator 类处嘎然而止,所有的神秘都汇聚于此时,相信不少读者也会对这个ProxyGenerator 类产生有类似的疑惑:它到底做了什么呢?它是如何生成动态代理类的代码的呢?诚然,这里也无法给出确切的答案。还是让我们带着这些疑惑,一起开始探索java之旅吧。

上一篇:java编程语言入门,用途广泛的编程语言
下一篇:对Java未来的规划:SE、ME、EE

马上预约三天免费体验课

姓名:

电话:

选择城市和中心
贵州省

广西省

海南省