java三种代理模式

代理模式

代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.

这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法.

静态代理

静态代理在使用时,需要定义接口或者父类,被代理对象与代理对象一起实现相同的接口或者是继承相同父类.

两个类同时继承payment接口 实现pay()方法
两个类同时继承payment接口 实现pay()方法
demo

静态代理总结:

1.可以做到在不修改目标对象的功能前提下,对目标功能扩展.

2.缺点:

因为代理对象需要与目标对象实现一样的接口,所以会有很多代理类,类太多.同时,一旦接口增加方法,目标对象与代理对象都要维护.

如何解决静态代理中的缺点呢?答案是可以使用动态代理方式

动态代理

动态代理有以下特点:

1.代理对象,不需要实现接口

2.代理对象的生成,是利用JDK的API,动态的在内存中构建代理对象(需要我们指定创建代理对象/目标对象实现的接口的类型)

3.动态代理也叫做:JDK代理,接口代理

总结:

代理对象不需要实现接口,但是目标对象一定要实现接口,否则不能用动态代理

cglib动态代理


在Spring的AOP编程中:

如果加入容器的目标对象有实现接口,用JDK代理.

如果目标对象没有实现接口,用Cglib代理

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、概述   代理模式我们接触的就比较多了,所谓的代理模式就是,给某一个对象提供一个代理对象,并由代理对象控制对原...
    骑着乌龟去看海阅读 1,011评论 0 9
  • 代理可以分为静态代理、动态代理,动态代理又可以分为 jvm的动态代理 和 cglib的动态代理。像spring框架...
    路远处幽阅读 386评论 0 1
  • 高艳峰 信阳 网络中级九期 坚持分享第259天 2018-12-14 为参加市里组织的工间操比赛,单位组织...
    gyf16阅读 152评论 0 0
  • 被记住的,永远是第一名。 试想一下,回答问题的时候,第一个举手的人,往往受到大家的关注,也会得到发言的机会。后面举...
    可伊伊阅读 293评论 0 0
  • 这几天因为天气反常,旧病复发,整天昏昏沉沉,恨不得一天都用来睡觉。 下班,三个同事一起回家,车上,前面的同事电话不...
    小鱼游游跳龙门阅读 495评论 6 23

友情链接更多精彩内容