设计模式之——代理模式(动态代理)
2009-12-08 11:58
232 查看
package proxypackage; public interface HelloService { public void getName(String name); public void echoMessage(String msg); }
接口实现类:
package proxypackage; public class HelloServiceImpl implements HelloService{ public void echoMessage(String msg) { System.out.println("echo:" + msg); } public void getName(String name) { System.out.println("The name is :" + name); } }
动态代理产生工厂类。
package proxypackage; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; public class HelloServiceProxyFactory { public static HelloService getHelloServiceProxy(final HelloService helloService){ InvocationHandler handler = new InvocationHandler(){ public Object invoke(Object proxy, Method method, Object[] args) throws Exception{ System.out.println("before calling "+method); Object result = method.invoke(helloService, args); System.out.println("after calling "+method); return result; } }; HelloService hello = (HelloService)Proxy.newProxyInstance(HelloService.class.getClassLoader(), new Class[]{HelloService.class}, handler ); return hello; } }
调用类:
package proxypackage; public class client2 { public static void main(String[] args) throws Exception{ HelloService helloService = new HelloServiceImpl(); HelloService proxy = HelloServiceProxyFactory.getHelloServiceProxy(helloService); proxy.echoMessage("good"); } }
输出结果:
before calling public abstract void proxypackage.HelloService.echoMessage(java.lang.String)
echo:good
after calling public abstract void proxypackage.HelloService.echoMessage(java.lang.String)
在动态代理产生工厂里面应用了反射机制。
相关文章推荐
- 模拟JDK动态代理(JAVA设计模式)
- 设计模式(三)动态代理
- 23个设计模式之代理模式(2)动态代理
- 设计模式-动态代理
- 设计模式--JDK动态代理的实现与原理解析(1)
- java设计模式之四:代理模式 java静态代理和动态代理
- java设计模式之代理模式 (静态&动态)
- 《尚学堂_史上最易懂的设计模式视频》--章节5 动态代理-JDK6自带的编译器
- 设计模式:用Java动态代理实现AOP
- 设计模式之动态代理
- java动态代理设计模式简单示例
- JAVA设计模式-11-代理模式(动态)(一)
- 设计模式之动态代理模式
- 设计模式之动态代理
- 老生常谈设计模式之动态代理
- java设计模式:动态代理模式 Proxy
- 用java调用编译器编译java文件-马士兵设计模式教程-动态代理 .
- 设计模式之代理模式------动态代理(示例说明)
- java设计模式_动态代理(dynamicProxy)
- 23种设计模式----------代理模式(三) 之 动态代理模式