动态代理实现动态插入日志

设计模式之动态代理

动态代理

静态代理:
需求:在项目现有所有类的方法前后打印日志。
那么我们如何在不修改原来代码的情况下实现这个功能呢?
我们可以先用“静态代理”的方式实现。

  1. 为现有的每一个类都编写一个对应的代理类,并且让它实现和目标类相同的接口(假设都有)

  2. 在创建代理对象时,通过构造器塞入一个目标对象,然后在代理对象的方法内部调用目标对象同名方法,并在调用前后打印日志。也就是说,代理对象 =增强代码 + 目标对象(原对象)。有了代理对象后,就不用原对象了。
    缺点:程序员要手动为每一个目标类编写对应的代理类。如果当前系统已经有成百上千个类,工作量太大了。所以,现在我们的努力方向是:如何少写或者不写代理类,却能完成代理功能?

动态代理:
JDK提供了java.lang.reflect.InvocationHandler接口和 java.lang.reflect.Proxy类。
优点:
代码演示动态代理:
业务接口
业务接口实现类
日志类
代理类
测试代码
演示结果,实现插入日志功能

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值