码迷,mamicode.com
首页 > 其他好文 > 详细

代理模式之静态代理

时间:2019-01-28 10:45:22      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:com   静态代理   图片   img   接口   http   strong   抽象   文档   

  由于前几天做生成文档的功能大量用到了反射机制,所以我闲时看了一下java反射机制的原理,发现里面大量使用了代理模式(java方法的method.invoke()代理native方法的method.invoke,不在此文章展开),由于对代理模式有点陌生了。写这篇文章重新加深一下我对代理模式的理解。

  代理模式顾名思义就是,找一个代理人帮你做事。比如B是买房者,要买房必须要经过中介A代理买房,因为B没有联系房东的方式。这里有三个角色,一个是代理对象即A,一个是目标对象B,第三个是A和B的抽象接口对象C。

代理模式分为静态代理和动态代理,以下讲静态代理。下一篇文章讲动态代理

静态代理:代码编译时就确定了被代理的类是哪一个;

 

  静态代理

下面写一个例子来实现静态代理。

技术分享图片 技术分享图片

运行结果:

技术分享图片

 

 

可以看到A作为代理对象,可以增强B的接口方法的功能。

由此知道代理模式的好处是:

在不修改目标对象的功能前提下,对目标功能扩展和增强 ,对目标功能增加拦截。比如中介增强了买房人的买房功能,明星经纪人帮明星拦截了狗仔。

当然也有坏处:

比如这种代理模式属于静态代理。每次有目标对象,都得增加一个代理对象。而且接口的功能如果要改变的话,目标和代理对象都得改,十分不方便。

 

代理模式之静态代理

标签:com   静态代理   图片   img   接口   http   strong   抽象   文档   

原文地址:https://www.cnblogs.com/liumz0323/p/10328418.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!