`

Dynamic Proxies in Java

 
阅读更多

  

Overview

 

Usually, the proxy class is already available as Java bytecodes, having been compiled from the Java source file for the proxy class.When needed, the bytecodes for the proxy class are loaded into the Java Virtual Machine and proxy objects can then be instantiated.But, in some circumstances, it is useful to dynamically generate the bytecodes for the proxy class at runtime. This module will look at the techniques for dynamically generating proxies in Java and the benefits of doing so.

Proxy objects are useful in many situations to act as an intermediary between a client object and a target object.

 

 

 

 

 

 

 

 

 

 

 

 Now let's have the client interact with the target object through a proxy.Remember that the main intent of a proxy is to control access to the target object, rather than to enhance the functionality of the target object.

Ways that proxies can provide access control include:

 

1. Synchronization

2. Authentication

3. Remote Access

4. Lazy instantiation

 

 

 Here's our VehicleProxy class:

 

/** * Class VehicleProxy. */ public class VehicleProxy implements IVehicle { private IVehicle v; public VehicleProxy(IVehicle v) {this.v = v;} public void start() { System.out.println("VehicleProxy: Begin of start()"); v.start(); System.out.println("VehicleProxy: End of start()"); } // stop(), forward(), reverse() implemented similarly. // getName() not shown. }



 

 

 

 

  /** * Class Client2. * Interacts with a Car Vehicle through a VehicleProxy. */ public class Client2 { public static void main(String[] args) { IVehicle c = new Car("Botar"); IVehicle v = new VehicleProxy(c); v.start(); v.forward(); v.stop(); } }


 

 

 

 

 

 

 

 

 Output for the vehicle example with a proxy:

 

    VehicleProxy: Begin of start()

   Car Botar started

   VehicleProxy: End of start()

   VehicleProxy: Begin of forward()

   Car Botar going forward

   VehicleProxy: End of forward()

   VehicleProxy: Begin of stop()

   Car Botar stopped

   VehicleProxy: End of stop()

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 大小: 15.9 KB
  • 大小: 23 KB
分享到:
评论

相关推荐

    Manning Java Reflection In Action

    Java Reflection in Action is unique in presenting a clear account of all the cool things you can do with reflection, and at the same time providing the sound conceptual basis that developers need to ...

    Java Reflection in Action

    Java Reflection in Action is unique in presenting a clear account of all the cool things you can do with reflection, and at the same time pro- viding the sound conceptual basis that developers need to...

    Java Networking and Proxies Code

    在Java编程领域,网络通信和代理(Proxies)是重要的组成部分,特别是在开发需要跨网络进行数据交换的应用时。本文将详细解析"Java Networking and Proxies Code"这一主题,包括如何启动一个线程来检查URL是否通过...

    java开发手册1.6

    3. **动态代理(Dynamic Proxies)**:Java 1.6提供了一种创建动态代理类的能力,它可以在运行时创建实现了特定接口的新类。这在实现AOP(面向切面编程)或事件监听器等场景中非常有用。 4. **NIO.2(New I/O 2)**...

    Java 1.6最新版API

    5. **动态代理(Dynamic Proxies)**:Java 提供了 `java.lang.reflect.Proxy` 类,可以创建动态代理类,实现运行时的接口实现。这对于实现 AOP(面向切面编程)或者事件处理非常有用。 6. **增强的 for 循环...

    代理模式Image Proxies(一、最朴素实现)

    在本文中,我们将探讨代理模式的最朴素实现,并通过Java代码示例进行讲解。 代理模式的核心思想是为一个对象提供一个替代品或占位符,以便控制对原对象的访问。这可以用于添加额外的功能,如缓存、日志记录、权限...

    java6.0 API 英文版

    在语言特性上,Java 6.0引入了动态代理(Dynamic Proxies),允许在运行时创建符合特定接口的新类型。此外,枚举类型(Enums)的引入增强了常量的表示和管理,降低了类型安全问题的发生概率。 在异常处理方面,`try...

    代理模式Image Proxies(二、最朴素实现)

    在这个名为“代理模式Image Proxies”的主题中,我们将探讨如何通过最朴素的方式来实现图像加载的代理。这个话题主要涉及到两个Java类:`LoadingImageIcon.java`和`ShowLoader.java`。 `LoadingImageIcon.java`可能...

    java-jdk1.6

    JDK 1.6引入了许多重要的特性,例如增强的并发工具(Concurrent Utilities),改进的垃圾回收机制,支持动态代理(Dynamic Proxies),XML Schema处理,以及对Java Annotation的增强等。此外,它还加强了安全性和...

    21天学通Java6源代码及答案

    3. **动态代理(Dynamic Proxies)**:Java 6通过`java.lang.reflect.Proxy`和`java.lang.reflect.InvocationHandler`接口提供了动态代理功能,可以方便地实现接口的动态代理对象,常用于AOP(面向切面编程)。...

    proxies_chi.zip

    标题"proxies_chi.zip"和描述中提到的内容是关于创建一个代理IP池的Python项目,这个项目能够自动从网络上抓取IP地址,检查它们的可用性,并将这些信息存储到数据库中,以便后续使用。这涉及到网络爬虫、IP验证、...

    Core Java Volume II 最新第8版 part1全两卷 (附随书源码)

    Volume I is designed to quickly bring you up to speed on what’s new in Java SE 6 and to help you make the transition as efficiently as possible, whether you’re upgrading from an earlier version of ...

    Java(JDK_API)压缩包

    - 动态代理(Dynamic Proxies),允许在运行时创建符合特定接口的新类型。 - 高效的数组复制和填充,通过System.arraycopy()和Arrays.fill()的优化。 - 支持NIO.2(New I/O 2.0),增加了文件系统和异步I/O操作。 ...

    代理模式Remote Proxies(三、RMI)

    RMI是Java平台上的一个特性,它使得运行在不同JVM上的对象可以相互调用方法,仿佛它们都在同一个JVM内一样。这篇博客可能详细解释了如何使用RMI实现远程代理。 RMI的核心概念包括远程接口(Remote Interface)、...

    JAVA API 1.6 _ZH_CN

    7. **动态代理(Dynamic Proxies)**:Java 1.6通过`java.lang.reflect.Proxy`类提供了动态代理功能,可以创建符合特定接口的代理对象,用于实现AOP(面向切面编程)或者事件监听等场景。 8. **并发(Concurrency)...

    Java SDK 1.6 版本jdk1.6

    4. **动态代理(Dynamic Proxies)**:允许在运行时创建符合特定接口的新类,这对于实现AOP(面向切面编程)等高级功能非常有用。 5. **NIO.2(New I/O API)**:提供了新的文件系统API,增强了文件操作的灵活性,...

    java运行环境jdk1.6.zip版本下载

    5. **动态代理(Dynamic Proxies)**:这个版本的动态代理支持接口的默认方法,使得代理对象能够透明地实现接口的默认方法。 6. **改进的Swing和AWT**:JDK1.6对Swing和AWT组件进行了增强,包括更好的外观一致性、...

    java1.6_api中文

    2. **动态代理(Dynamic Proxies)**:Java 1.6引入了动态代理,允许在运行时创建符合特定接口的新类。这对于实现AOP(面向切面编程)或者事件监听器模式非常有用。 3. **改进的异常处理**:增加了对try-with-...

    Java高级编程(JDK6版) (英文版)

    4. **动态代理(Dynamic Proxies)**:JDK 6提供了更强大的动态代理支持,允许在运行时创建接口的代理类,用于实现回调机制或AOP(面向切面编程)。 5. **NIO.2**:Java 6引入了NIO(非阻塞I/O)的升级版NIO.2,提供...

Global site tag (gtag.js) - Google Analytics