P12 代理模式

P12 代理模式,第1张

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();
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5708402.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存