Import Java. lang. reflect. invocationhandler; import Java. lang. reflect. method; import Java. lang. reflect. proxy; // interface myinterface {public void action ();} // class myobject implements myinterface {@ overridepublic void action () {system. out. println ("I Am a proxy class, execute action! ") ;}}// Interface clothfactory {public void productcloth () ;}// the class nikeclothfactory implements clothfactory {@ overridepublic void productcloth () {system. out. println ("I Am a proxy class, Nike produces clothes") ;}// subclass class myinvocationhandler implements invocationhandler {private object OBJ; Public void setobject (Object OBJ) that implements the invocationhandler Interface) {This. OBJ = OBJ ;}@ overridepublic object invoke (Object proxy, method, object [] ARGs) throws throwable {system. out. println ("dynamic proxy class execution, receiving proxy fee"); object returnval = method. invoke (OBJ, argS); Return returnval ;}// dynamic proxy class myproxy {public static object getproxyinstance (Object OBJ, invocationhandler handler) {return proxy. newproxyinstance (obj. getclass (). getclassloader (), obj. getclass (). getinterfaces (), Handler);} public class testproxy {/*** @ title: Main * @ Description: * @ Param: * @ return void * @ User: wangzg * @ Date: 2014-10-27 * @ throws */public static void main (string [] ARGs) {// todo auto-generated method stub // The proxy class myobject = new myobject (); myinvocationhandler = new myinvocationhandler (); myinvocationhandler. setobject (myobject); object myproxy = myproxy. getproxyinstance (myobject, myinvocationhandler); myinterface = (myinterface) myproxy; myinterface. action (); nikeclothfactory = new nikeclothfactory (); myinvocationhandler. setobject (nikeclothfactory); object myproxynike = myproxy. getproxyinstance (nikeclothfactory, myinvocationhandler); clothfactory = (clothfactory) myproxynike; clothfactory. productcloth ();}}
Dynamic proxy in proxy Mode