静态代理和动态代理样例

发布时间:2024年01月17日

一、什么是代理

所谓代理,其实就是扮演了一个中间人的角色 。打个比方买火车票,12306的app就是一个代理,代理了火车站售票窗口的功能。小区当中的代售点也是代理,黄牛也是代理。他们替你买了,你就不需要去火车站售票窗口了,就相当于增强了售票窗口的功能。

二、代理的分类

代理分为静态代理和动态代理,其中动态代理又分为jdk动态代理和cglib动态代理。

三、代理的应用

1、静态代理

定义接口Singer

定义类Cai实现接口

定义代理类

主方法以及运行结果

2、jdk动态代理

定义接口Singer

定义类Cai实现接口

定义规则Rule实现接口InvocationHandler,重写invoke方法

运行结果

3、cglib动态代理

定义类Singer

定义一个子类SingerSub继承父类Singer

主方法以及运行结果

四、总结

代理主要目的是为了在不需要修改代码的情况下就能够增强代码功能。然后才是增强安全性,增加扩展度,灵活度等等。但是如果在需求不确定的情况下,使用静态代理将会造成毁灭性的编码灾难。因为一旦开始构建需求,就会构建对应的类。一旦类产生了,就会因为需求的改变,演变成新的类,进而引起类爆炸。为了解决这个问题,码农的前辈们就整出了动态代理,jdk动态代理和cglib动态代理的区别在于有没有接口,有接口的是jdk动态代理,没有接口的是cglib动态代理。
?

文章来源:https://blog.csdn.net/X_islu/article/details/135631665
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。