ProxyFactory类
package com.zzq.proxy; import java.lang.reflect.InvocationHandler; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Proxy; public class ProxyFactory implements InvocationHandler{ private Object target; public ProxyFactory() {} public void setTarget(Object target) { this.target = target; } public Object createProxyBean() { return Proxy.newProxyInstance( target.getClass().getClassLoader(), target.getClass().getInterfaces(), this ); } public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { Object result = null; try { this.before(); result = method.invoke(target, args); this.afert(); } catch (Exception e) { afterThrow(e); } return result; } public void before() { System.out.println("before"); } public void afert() { System.out.println("afert"); } public void afterThrow(Throwable t) { System.out.println("afterThrow"); if(t instanceof InvocationTargetException) { t = t.getCause(); System.out.println(t.getMessage()); } else { System.out.println(t.getMessage()); } } }
package com.zzq.proxy; public interface SimpleBean { public void sayHello(); public void throwException(); }
package com.zzq.proxy; public class SimpleBeanImpl implements SimpleBean { public void sayHello() { System.out.println("hello proxy pattern!"); } public void throwException() { throw new RuntimeException("出错了"); } public static void main(String[] args) { ProxyFactory factory = new ProxyFactory(); factory.setTarget(new SimpleBeanImpl()); SimpleBean proxy = (SimpleBean)factory.createProxyBean(); proxy.sayHello(); proxy.throwException(); } }
相关推荐
动态代理&静态代理
代理模式(proxy) 行为型模式(behaviour) 责任链模式(chainrespon) 命令模式(commond) 解释器模式(interpreter) 迭代器模式(iterator) 中介者模式(mediator) 备忘录模式(memento) 观察者模式(observer) 状态模式...
LinFu.DynamicProxy -- 1.0.3.14911 log4net -- 1.2.10.0 NHibernate -- 2.1.0.2002 NHibernate.ByteCode.LinFu -- 2.1.0.2002 StructureMap -- 2.5.3.0 ☆ 开发环境 ☆ 开发工具:Microsoft Visual Studio 2010 ...
LinFu.DynamicProxy -- 1.0.3.14911 log4net -- 1.2.10.0 NHibernate -- 2.1.0.2002 NHibernate.ByteCode.LinFu -- 2.1.0.2002 StructureMap -- 2.5.3.0 ☆ 开发环境 ☆ 开发工具:Microsoft Visual Studio 2010 ...
DynamicProxy实现AOP拦截,因此针对AOP拦截部分的开发,我们需要借助CastleDynamicProxy框架。在此说明一下,虽然Apworks极力使用分离接口模式(Separated InterfacePattern,PoEAA)来降低核心模块对第三方组件的...
Android代理模式简单Demo,项目里面simple包下为原理,UML类图通用模式代码,demo包下为具体案例:律师lawyer代理user打官司,DynamicProxy为动态加载代理模式类.各自调用均在对应包的client;同步博文:...
Spring初探 准备工作 构建Spring基础代码 Spring 基础语义 Dependency Injection 依赖注入的几种实现类型 ... Dynamic Proxy 与Spring AOP CGLib 与 Spring AOP AOP 应用 DAO Support Remoting
本文来自csdn,本文全面讲解Android开发中最常用的设计模式-代理模式中的动态...设计动态代理类(DynamicProxy)时,不需要显式实现与目标对象类(RealSubject)相同的接口,而是将这种实现推迟到程序运行时由JVM来实
Latest version router 1.2.8 —— modified code to avoid concurrent bugs ...> what's dynamic proxy and how to use , see my blog 代理模式的学习与应用 Background EventBus is good ,but there are some pr
设计模式之 Proxy(代理) 以 Jive 为例,剖析代理模式在用户级别授权机制上的应用 设计模式之 Facade(门面?) 可扩展的使用 JDBC针对不同的数据库编程,Facade提供了一种灵活的实现. 设计模式之 Composite(组合) ...
代理模式(proxy) 行为型模式(behaviour) 责任链模式(chainrespon) 命令模式(commond) 解释器模式(interpreter) 迭代器模式(iterator) 中介者模式(mediator) 备忘录模式(memento) 观察者模式(observer) 状态模式...
欢迎使用ProxyBuilder 欢迎使用ProxyBuilder ...什么是代理? 如果您想对代理模式本身有一个概述,我可以推荐以下资源。 我们要达到什么目标?...这是一些基于DynamicProxy的示例。 但是我们也创建了生成的静态版本.
1.概述上一篇文章主要讲述了TuscanySCA的插件板模式及工厂模式的发展和提升,本文主要介绍TuscanySCA开源软件中动态代理模式(DynamicProxy)及方法调用Invocation。在使用TuscanySCA中,我们只需要写接口及实现类,...
basicKnowledge.dynamicProxy; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; /* * JDK 动态代理 * */ public class dynamicProxyUsingJDK { ...
Java Java学习案例库 Java案例目录 ... cn.liguohao.proxy.dynamic :动态代理 设计模式目录 参考《 Head First Java设计模式》 cn.liguohao.design.pattern.duck :面向接口编程 ...
Configure for Dynamic IP addresses? [yes]: 7) 是否使用缺省IP地址: Configure Default IP addresses? [no]: yes 8) 是否使用TCP头压缩: Configure for TCP Header Compression? [yes]: 9) 是否在异步口上...