Java基础-代理

什么是Java中的类加载器
类加载器(class loader)用来加载 Java 类到 Java 虚拟机中

java.lang.ClassLoader 类的基本职责就是根据一个指定的类的名称,找到或者生成其对应的字节代码,然后从这些字节代码中定义出一个 Java 类,即 java.lang.Class 类的一个实例

什么是代理
买票:在网上直接买票相对于到电影院现场买票就是代理
买东西:在超市买东西,相对于批发市场、厂家,就是代理

Java中的代理
通过自定义的代理类对想要访问的对象进行访问

Java中的代理的作用
不改动原有代码的基础上,在原有方法前后添加新功能。

什么是静态代理
静态代理所代理的类为确定的,称为静态代理

静态代理代码的编写过程
1、定义业务接口,例如,电影接口,方法为:play()播放
2、创建业务类,实现业务接口,例如,具体电影的实现,盗梦空间
3、创建代理类,实现业务接口,例如,可以在上面具体业务方法play()的前后

静态代理缺点
维护成本高:如果业务接口添加新的方法,那么业务类和代理类都要添加

什么是动态代理
动态代理能够通过反射,动态的生存代理类对象。

动态代理代码的编写过程
1、定义业务接口1,例如,电影接口,方法为:play()播放
2、创建业务类1.1,实现业务接口1,例如,具体电影的实现,《盗梦空间》
2.1、创建业务类1.2,实现业务接口1,例如,具体电影的实现,《星际穿越》
3、定义业务接口2,例如,卖爆米花接口,方法为:sell()
4、创建业务类2.1,实现业务接口2,例如,卖大份的爆米花
5、创建一个类,实现InvocationHandler接口。
(此时,可以在invoke()方法中在调用方法前后,添加功能)

动态代理内部实现逻辑

动态代理和静态代理的区别
静态代理,自己实现代理类
动态代理,通过实现InvocationHandler接口,用Proxy.newInstance方法生成代理类

相关:
Proxy类
InvocationHandler接口

特点:
1、Proxy对象不需要implements接口
2、Proxy对象的生成利用JDK的Api,在JVM内存中动态的构建Proxy对象。需要使用java.lang.reflect.Proxy类的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值