Different implementations of the ProxyFactory interface.
Currently are two implementations supported. One based on the {@linkplain java.lang.reflect JDK's reflection API} and the other one on the CGLIB library.
The usage of a special {@linkplain com.thoughtworks.proxy.ProxyFactory} is simple and easy:
ProxyFactory factory = new StandardProxyFactory(); List<String> proxy = factory.createProxy(new SimpleInvoker(new ArrayList<String>()), List.class); proxy.add("Hello World"); System.out.println("Size of list: " + proxy.size()); System.out.println("First element of list: " + proxy.get(0));
The example creates a proxy that implements the {@linkplain java.util.List} interface. The proxy is backed up by a instance of an {@linkplain java.util.ArrayList}. The proxy ensures in this example, that the instance cannot just be casted to access the specific methods of the ArrayList like {@link java.util.ArrayList#ensureCapacity(int)}. Compare with the JDK's reflection API, there is not a real difference.