动态代理设计模式
2013-08-07 21:47
134 查看
静态与动态的区别是在于编译时期还是运行时期。如何来运行时候来修改方法呢?动态代理是AOP的基础,动态代理,是生成一个与被代理对象具有相同的接口,并且修改方法生成的一个类。
在Java中,代理类要实现InvocationHandler接口,它里面有一个重要的方法,就是invoke()方法。
好了,看一个例子:
public interface IFood {
void show();
}
public class GuangdongFoodImp implements IFood{
@Override
public void show() {
System.out.println("广东小吃");
}
}
public class DynamicProxy implements InvocationHandler {
private Object obj;
public DynamicProxy(Object obj){
this.obj=obj;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
System.out.println("before call...");
method.invoke(obj, args);
return null;
}
}
public class Client {
public static void main(String[] args) {
GuangdongFoodImp food=new GuangdongFoodImp();
InvocationHandler in=new DynamicProxy(food);
IFood proxyfood=(IFood)Proxy.newProxyInstance(food.getClass().getClassLoader(), food.getClass().getInterfaces(), in);
proxyfood.show();
}
}
在Java中,代理类要实现InvocationHandler接口,它里面有一个重要的方法,就是invoke()方法。
好了,看一个例子:
public interface IFood {
void show();
}
public class GuangdongFoodImp implements IFood{
@Override
public void show() {
System.out.println("广东小吃");
}
}
public class DynamicProxy implements InvocationHandler {
private Object obj;
public DynamicProxy(Object obj){
this.obj=obj;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
System.out.println("before call...");
method.invoke(obj, args);
return null;
}
}
public class Client {
public static void main(String[] args) {
GuangdongFoodImp food=new GuangdongFoodImp();
InvocationHandler in=new DynamicProxy(food);
IFood proxyfood=(IFood)Proxy.newProxyInstance(food.getClass().getClassLoader(), food.getClass().getInterfaces(), in);
proxyfood.show();
}
}
相关文章推荐
- 0103 Java设计模式03-动态代理(概念篇)【进阶】
- 设计模式-动态代理模式
- Java设计模式之动态代理
- java设计模式(七)代理模式和java动态代理机制
- Android开发中无处不在的设计模式——动态代理模式
- 设计模式之动态代理
- java 设计模式 代理 静态和动态
- 设计模式学习笔记(三)动态代理模式
- 27 API-反射(类的加载器,反射的使用,动态代理)&设计模式(装饰设计模式,模版设计模式)&JDK新特性(JDK5,JDK6,JDK7,DK8)
- java设计模式_代理模式_动态代理(带例子)
- 设计模式-深入剖析动态代理模式(3)内部运作机制-通俗代码版
- 设计模式-动态代理
- 设计模式之 动态代理模式
- 设计模式之 动态代理
- 设计模式之代理模式------动态代理(示例说明)
- 设计模式之--代理模式(动态代理)
- 架构设计之设计模式 (二) 静态代理和动态代理--间接“美”
- java动态代理设计模式简单示例
- 设计模式——动态代理
- 设计模式之代理模式二(动态代理)