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

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

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

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

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

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

 

  静态代理

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

 

运行结果:

 

 

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

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

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

当然也有坏处:

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

 

转载于:https://www.cnblogs.com/liumz0323/p/10328418.html

你可能感兴趣的文章
Codeforces 607D Power Tree 线段树 (看题解)
查看>>
写在人生的路上——2016年上半年总结
查看>>
员工选票系统-java
查看>>
C语言、C语言的起源以及类似C语言的编程语言的历史简直不要太漫长,我简单总结列表如下:...
查看>>
sp1.3-1.4 Neural Networks and Deep Learning
查看>>
JavaScript易错知识点整理
查看>>
Biological Clocks
查看>>
2018-10-11
查看>>
国内NLP的那些人那些会
查看>>
SQL 将一个表中的所有记录插入到一个临时表中
查看>>
nmea协议
查看>>
js 中对象的特性
查看>>
hdoj3714【三分】
查看>>
嵌入式开发入门(4)—驱动入门之时序图分析【20121211修改,未完】
查看>>
Python 使用字符串
查看>>
Quartz Core之CALayer
查看>>
java:一个项目的开发过程(转)
查看>>
express框架学习笔记
查看>>
记录一个css的综合运用
查看>>
在Ubuntu中安装PHP,MySQL,Nginx和phpMyAdmin
查看>>