- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第
由反射引出的Java动态代理与静态代理
在《深入剖析Java中的反射,由浅入深,层层剥离!》这篇文章中我们讲反射时,曾提到过Java的动态代理中使用了反射技术,那么好,今天我们要就着反射的索引,来学习一下Java中的代理!
在Java中有多达23种的设计模式(后面Java基础更新完后,会找个时间详细的去写写这些设计模式),恰当的设计模式的使用能够提升代码的效率,简化代码的复杂性。
而今天我们要说的代理模式就是其中之一,所谓代理是为某对象提供一种代理以控制对该对象的访问。即客户端通过代理间接地访问该对象,从而限制、增强或修改该对象的一些特性。
大白话:买房的(客户方),房产销售(代理方),卖房的(委托方)
在Java中有静态代理和动态代理两种实现方式,继续放下看!!!
所谓静态代理,一般是针对编译期就已经完成了接口,实现类,代理类的定义,我们对目标对象的增强需要手工去完成,一个目标对象就要有个代理类,非常不灵活。
静态代理的实现步骤
1,因为代理类与被目标对象有相似的行为(共同),所以我们先创建一个接口。
publicinterfaceSaleHouse{
StringsaleHouse();
2,提供接口的实现类,当做目标对象
publicclassSaleHouseImplimplementsSaleHouse{
@Override
publicStringsaleHouse(){
return我要卖房子啦!!!
3,代理类同样也要实现接口,并在目标方法前后做一些控制操作
publicclassSaleHouseProxyimplementsSaleHouse{
privateSaleHousesaleHouse;
//提供一个包含目标对象的有参构造
publicSaleHouseProxy(SaleHousesaleHouse){
this.saleHouse=saleHouse;
@Override
publicStringsaleHouse(){
//调用方法前,我们可以加一些自己的控制
System.out.println(我要收代理费!!!
System.out.println(--------------------
Strings=saleHouse.saleHouse();
System.out.println(s);
System.out.println(--------------------
//调用方法后,我们依旧可以操作
System.out.println(我要拿提成!!!
return这就是静态代理
4,客户端调用代理类,并传入目标对象
publicclassTest{
publicstaticvoidmAIn(String[]args)throwsFileNotFoundException{
//客户端调用静态代理
SaleHousesaleHouse=newSaleHouseImpl();
SaleHouseProxysaleHouseProxy=newSaleHouseProxy(saleHouse);
saleHouseProxy.saleHouse();
5,控制台查看打印结果
我要收代理费!!!
--------------------
我要卖房子啦!!!
--------------------
我要拿提成!!!
其实无论是静态代理还是静态代理,在我们的日常开发中,使用的都是很多,但对于SpringAop、RPC等框架来说,动态代理发挥着相当大的作用,动态代理具有:运行时控制,灵活性更好的特点。
那怎么实现动态代理呢?
如下三种方式:
JDK动态代理
CGLib动态代理
使用Springaop模块完成动态代理功能//今天先不说这个
JDK动态代理
实现步骤:
1,定义一个接口及其实现类;
代码同静态代理中步骤1,步骤2;
2,自定义InvocationHandler(调用处理器)并重写invoke方法,在invoke方法中我们会调用原生方法(被代理类的方法)并自定义一些处理逻辑;
publicclassJdkDynamicInvocationHandlerimplementsInvocationHandler{
//代理
您可能关注的文档
最近下载
- 标准图集-16G101-3混凝土结构施工图-平面整体表示方法制图规则和构造详图.pdf VIP
- 云南省重点中医专科专病建设评分标准.docx
- 《建设工程监理规范》GB50319-2013年.ppt VIP
- 第6课 三国两晋南北朝政权更迭与民族交融(课件)-【中职专用】《中国历史》魅力课堂教学三件套(高教版2023•基础模块).pptx VIP
- 《启蒙运动》练习题.pdf VIP
- 寄生虫全切片+标本.doc
- 第5课 秦汉时期的经济、科技与文化-【中职专用】《中国历史》魅力课堂教学课件(高教版2023•基础模块).pptx VIP
- PDCA肿瘤科运用PDCA持续提高临床路径入径率.pptx
- 多尼采蒂,军中女郎中咏叹调多么快乐的一天独唱+钢琴谱.pdf
- 《习作:中国的世界文化遗产》ppt课件.pptx VIP
文档评论(0)