java动态代理设计模式简单示例
2012-05-18 08:29
761 查看
package chart03.proxy; /** * 增强操作,对于被代理对象的扩充 * @author heshengjun * */ public interface IAdvise { public abstract void doBefore(); public abstract void doAfter(); }
package chart03.proxy; public class AdviseImpl implements IAdvise { @Override public void doBefore(){ System.out.println("画家准备画画了。。。。"); } @Override public void doAfter(){ System.out.println("画家画完画了"); } }
package chart03.proxy; /** * 需要代理的对象的接口 * @author heshengjun * */ public interface IPicShow { public abstract void show(); }
package chart03.proxy; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; public class PicHardler implements InvocationHandler { private IAdvise advise; private IPicShow pic; public PicHardler(IAdvise advise) { this.advise=advise; } public Object bind(IPicShow pic){ this.pic=pic; return Proxy.newProxyInstance(pic.getClass().getClassLoader(), pic.getClass().getInterfaces(), this); } public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { Object obj=null; System.out.println(args); if("show".equals(method.getName())){ this.advise.doBefore(); obj=method.invoke(pic, args); this.advise.doAfter(); return obj; }else{ return method.invoke(pic, args); } } }
package chart03.proxy; import java.lang.reflect.InvocationHandler; /** * 动态代理设计模式 * 讲述一个动态代理的基本思路。把基本的功能进行分开。 * 设计思路 * 1、设计一个需要代理的类和接口 * 2、设计一个增强的类和接口 * 3、设计一个代理类 处理类,实现InvocationHardler * 4、创建一个测试类 * * 关键:设计代理类 * 字段:增强方法 增强对象通过构造方法传入 * 代理对象 通过自定义一个方法bind进行返回一个代理对象 * 在测试类中调用代理对象的方法就可以了。 * @author heshengjun * */ public class ProxyDesign { public static void main(String[] args) { IPicShow pic=new PicShow(); IAdvise advise=new AdviseImpl(); PicHardler handler=new PicHardler(advise); IPicShow proxy=(IPicShow)handler.bind(pic); proxy.show(); } }
相关文章推荐
- Java设计模式之静态代理和动态代理(简单例子)
- java设计模式之---动态代理
- java几种常用设计模式简单示例
- java设计模式_代理模式_动态代理(带例子)
- 设计模式(2)--java动态代理及jdk和cglib的区别
- 模拟JDK动态代理(JAVA设计模式)
- java几种常用设计模式简单示例
- 设计模式(3)-结构型-代理模式(proxy)以及java动态代理的两种方式
- java设计模式之代理模式,java动态代理
- Java动态代理(设计模式)代码详解
- Java基础 - 类的加载,类加载器,反射,动态代理,模板设计模式,JDK5新特性,枚举(类),JDK1.7新特性
- java学习之路---设计模式---动态代理
- java几种常用设计模式简单示例
- 设计模式之代理模式------动态代理(示例说明)
- Java设计模式之动态代理
- JAVA设计模式-11-代理模式(动态)(一)
- java设计模式—动态代理模式
- java代理设计模式(静态代理与动态代理)
- JAVA设计模式-12-代理模式(动态)(二)
- java几种常用设计模式简单示例