The Proxy design pattern (GoF) allows you to provide “a surrogate or placeholder for another object to control access to it”. Proxies can be used in many ways, some of which are:
Commons Proxy supports dynamic proxy generation using proxy factories, object providers, invokers, and interceptors.
A ProxyFactory encapsulates all necessary proxying logic away from your code. Switching proxying techniques/technologies is as simple as using a different proxy factory implementation class. Commons Proxy provides several proxy factory implementation modules:
Additionally, the core library provides a proxy factory implementation that delegates to instances discoverable using the Java ServiceLoader mechanism (including those provided by the listed modules).
Proxy factories allow you to create three different types of proxy objects:
Object providers provide the objects which will be the “target” of a proxy. There are two types of object providers:
A core object provider provides a core implementation object. Commons Proxy supports many different implementations including:
clone()
method on a Cloneable
objectA decorating object provider decorates the object returned by another provider. Commons Proxy provides a few implementations including:
An Invoker handles all method invocations using a single method. Commons Proxy provides a few invoker implementations:
null
(useful for the “Null Object” pattern)Commons Proxy allows you to “intercept” a method invocation using an Interceptor. Interceptors provide rudimentary aspect-oriented programming (AOP) support, allowing you to alter the parameters/results of a method invocation without actually changing the implementation of the method itself. Commons Proxy provides a few interceptor implementations including:
The latest version is v1.0. - Download now!
For previous releases, see the Apache archive.
Note: The 1.x releases are compatible with JDK1.4+.
The Commons mailing lists act as the main support forum. The user
list is suitable for most library usage queries. The dev
list is intended for the development discussion. Please remember that the lists are shared between all Commons components, so prefix your email subject with [proxy]
.
Issues may be reported via ASF JIRA. Please read the instructions carefully to submit a useful bug report or enhancement request.