设计模式之代理模式
来源:互联网 发布:剑灵龙族捏脸数据 编辑:程序博客网 时间:2024/06/11 18:32
静态代理就不叙述了,就是多个接口实现类组合和继承复写两种方式。
动态代理:JDK动态代理(组合方式)
public interface ProxyAble {void proxy();}
public class Proxy1 implements ProxyAble{public void proxy() {System.out.println("我是被代理类。。");}}
import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;public class MyHandler implements InvocationHandler{private Object obj;public MyHandler(Object obj){this.obj = obj;}/* * proxy被代理对象 * method被代理对象方法 * args被代理对象参数 */@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {System.out.println("我是代理类");method.invoke(obj);return null;}}
import java.lang.reflect.Proxy;import java.util.logging.Handler;/* * JDK动态代理测试类 */public class ProxyTest {public static void main(String[] args) {Proxy1 p = new Proxy1();MyHandler myHandler = new MyHandler(p);ProxyAble proxyAble = (ProxyAble)Proxy.newProxyInstance(p.getClass().getClassLoader(), p.getClass().getInterfaces(), myHandler);//生成一个代理p的类实现ProxyAble接口proxyAble.proxy();}}
我是代理类
我是被代理类。。
动态代理:Cglib动态代理(继承)
public class Cglib {void go(){System.out.println("我是被代理类");}}
import java.lang.reflect.Method;import net.sf.cglib.proxy.Enhancer;import net.sf.cglib.proxy.MethodInterceptor;import net.sf.cglib.proxy.MethodProxy;public class CglibProxy implements MethodInterceptor {private Enhancer enhancer = new Enhancer();public Object getProxy(Class clazz){//设置创建子类的类enhancer.setSuperclass(clazz);enhancer.setCallback(this);return enhancer.create();}/* * obj目标类的实例 * m目标方法的反射对象 * args方法参数 * proxy代理类 * *///拦截所有目标类方法的调用@Overridepublic Object intercept(Object obj, Method m, Object[] args, MethodProxy proxy) throws Throwable {//代理类调用父类的方法 proxy.invokeSuper(obj, args); System.out.println("我是代理类");return null;}}
public class CglibTest {public static void main(String[] args) {CglibProxy proxy = new CglibProxy();Cglib c = (Cglib)proxy.getProxy(Cglib.class);c.go();}}
我是被代理类
我是代理类
阅读全文
0 0
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之-代理模式
- 设计模式之 代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之-----代理模式
- 设计模式之代理模式
- 设计模式之-代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- java数据结构排序之快速排序
- 今天你用 === 了吗?
- pyqt5 官方例子笔记 animate-1
- HDU 6059 Kanade's trio 字典树 统计 容斥
- 数据结构之二叉树的一些基本操作
- 设计模式之代理模式
- android 数据库 shared preferences文件查看
- 文章标题
- 浅谈浏览器劫持问题
- 初步探讨数组和指针的区别与联系
- 最小生成树(Kruskal算法和Prim算法)
- 《零基础入门学习Python》学习过程笔记【28文件】
- 初识Redis之基本命令(三)
- 大话设计模式——UML逆向工程