动态代理

代理模式的理解

一种应用很广的结构设计模式,映射现实生活中也有很多场景,比如火车票代售点,明星经纪人的很多业务。。。
直接调用:用什么方法,直接找对应的对象去调用
【买票直接去官方提供的地点,要拍戏直接找某个明星。。。】
代理模式调用:用什么方法,不能直接找具体的对象,需要找到代理对象,代理对象存在具体对象的引用,实际这个方法执行还是调用的具体对象
【买火车票:假如火车站不给个人提供买票,我们必须通过去代理点买票,代理点最后实际是去火车站给我们买票;找明星拍戏,不能直接找这个明星,我们找到经纪人,实际拍戏还是明星拍戏】

代理种类

根据字节码文件生成的时机,分为静态代理 和 动态代理
静态代理:我们手动编写了代理类,程序运行前,已经存在这个代理对象的字节码文件
动态代理:程序运行前,不存在代理类,是根据我们需求动态生成的代理类

jdk动态代理:首先动态生成Java文件,然后编译为字节码文件,最后加载到内存
CGLib动态代理:是直接生成字节码文件,然后加载到内存

静态代理缺点

1、 当需要代理多个类的时候,由于代理对象要实现与目标对象一致的接口,有两种方式:
只维护一个代理类,由这个代理类实现多个接口,但是这样就导致代理类过于庞大
新建多个代理类,每个目标对象对应一个代理类,但是这样会产生过多的代理类
2、当接口需要增加、删除、修改方法的时候,目标对象与代理类都要同时修改,不易维护。

参考博文:https://www.cnblogs.com/whirly/p/10154887.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值