博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
代理模式
阅读量:6603 次
发布时间:2019-06-24

本文共 1487 字,大约阅读时间需要 4 分钟。

hot3.png

一、静态代理

    使用静态代理,要创建三个步骤:

  1. 定义抽象角色
  2. 定义具体角色
  3. 定义代理角色
public interface Star {    // 定义抽象角色    void singing();}
public class Eason implements Star {    @Override    public void singing() {        System.out.println("我是陈奕迅,我唱淘汰");    }}
public class EasonProxy implements Star {    public EasonProxy(Star star) {        this.star = star;    }    private Star star;    @Override    public void singing() {        System.out.println("我是经纪人,我代理陈奕迅");        star.singing();        System.out.println("胖子唱完歌了");    }}

230642_GlLr_3139515.png

二、动态代理

    动态代理在spring aop上有使用到。

    1)jdk动态代理

public interface Star {    // 定义抽象角色    void singing();}
public class Eason implements Star {    @Override    public void singing() {        System.out.println("我是陈奕迅,我唱淘汰");    }}
public class StarHandler implements InvocationHandler {    private Star realStar;    public StarHandler(Star realStar) {        super();        this.realStar = realStar;    }    @Override    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {        Object object = null;        System.out.println("我被代理之前干的事情");        object = method.invoke(realStar, args);        System.out.println("我被代理之后干的事情");        return object;    }}
public static void main(String[] args) {    Star star = new Eason();    StarHandler handler = new StarHandler(star);    Star proxy = (Star) Proxy.newProxyInstance(ClassLoader.getSystemClassLoader(), new Class[]{Star.class}, handler);    proxy.singing();}

232047_Boyi_3139515.png

 

转载于:https://my.oschina.net/u/3139515/blog/1572507

你可能感兴趣的文章
LeeCode-Swap Nodes in Pairs
查看>>
JSR303结合切面校验参数
查看>>
130242014076+陈旭+第2次实验
查看>>
【MySQL】centOS中安装和配置MySQL
查看>>
bzoj 1070: [SCOI2007]修车
查看>>
乱码发生的原因
查看>>
CMD命令行基本命令
查看>>
Go语言的通道(2)-缓冲通道
查看>>
javascript 正则表达式邮箱验证
查看>>
poj1328
查看>>
response.write()跟ajax冲突的解决方案
查看>>
【编码】utf-8
查看>>
两个viewport的故事(第二部分)
查看>>
display:table-cell的应用
查看>>
在micropython固件中增加自己的模块
查看>>
【数学】数论进阶-常见数论函数
查看>>
第一轮复习Servlet day04
查看>>
Babel下的ES6兼容性与规范
查看>>
【iOS开发】视图控制器加载和卸载时的几个函数
查看>>
python——装饰器
查看>>