栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

P12 代理模式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

P12 代理模式

一、定义

为其他对象提供一种代理,从而控制对要访问的对象的访问

二、类图

1、静态代理

Client持有IProxy,创建Tabao实例,在TaoBao实例的构造函数中,关联到Shopping

真正发起构买时,通过Proxy触发,先执行Taobao的buy,再执行Shopping的buy,client不直接和Shopping交互

2、动态代理

 

由jdk生成代理对象:当访问proxy的方法时,实际访问的是handler里的代理

三、代码

public class Shopping implements IShopping {
    @Override
    public void buy() {
        System.out.println("小卖部购买");
    }
}
public class MyHandler implements InvocationHandler {
    Object target;

    public MyHandler(Object proxy) {
        this.target = proxy;
    }

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println("打开淘宝");
        return method.invoke(target, args);
    }
}
public class Client {
    public static void main(String[] args) {
        IShopping shopping = new Shopping();
        MyHandler handler = new MyHandler(shopping);
        ClassLoader classLoader = shopping.getClass().getClassLoader();
        Class[] interfaces = shopping.getClass().getInterfaces();
        IShopping proxy = (IShopping)Proxy.newProxyInstance(classLoader, interfaces, handler);
        proxy.buy();
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/709860.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号