模拟Java动态代理模式:JDK动态代理

代理模式的思想是为了提供额外的处理或者不同的操作而在实际对象与调用者之间插入一个代理对象。

Java开发中的开闭原则,对扩展开放,对修改关闭,所以当功能不满足需求时,应当避免直接修改源代码,而是应该对其进行扩展

创建接口 TargetInte

在这里插入图片描述
创建目标类 TargetInteImpl
在这里插入图片描述
测试类
在这里插入图片描述
测试结果

在这里插入图片描述

代理的作用就是对目标方法进行功能增强

假设现在目标方法中的功能已经不能满足我们的需求,我们需要在目标方法的原有功能之前增加【输出当前时间】的功能,原有功能之后增加【输出执行结果】的功能,为了符合Java开发的开闭原则,我们不在目标实现类中直接对代码进行修改,而是为目标类创建一个代理类

jdk的动态代理要求目标类必须是接口的实现类,如果目标类不是接口的实现类就不能使用jdk的动态代理

创建InvocationHandler类 InvocationHandlerProxy

该类实现了 InvocationHandler 接口和接口中的invoke方法,方法中是代理的功能,包括目标方法中的功能和扩展的功能

在这里插入图片描述
测试类

前面只是定义了代理的功能,在测试类中我们要创建代理

语法:Proxy.newProxyInstance(目标类加载器,目标类实现的接口,代理执行的操作),类型为接口类型

在这里插入图片描述

代理调用方法时实际是调用 InvocationHandler类中的 invoke 方法,也就相当于调用功能增强的目标方法

测试结果
在这里插入图片描述
不对目标方法进行修改,通过jdk的动态代理来为目标方法增加额外的功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值