JDK动态代理(通俗易懂,小白首选)

动态代理的概念

首先来理解动态代理是什么?它能干什么?它的好处或者说优势是什么?

动态代理顾名思义就是动态地代理目标对象执行相应的操作,并且在之间进行功能增强,也就是在执行目标对象的方法同时加上其他需要的业务处理。作用是能代替目标对象执行目标对象的方法,达到调用者的目的同时,还可以进行功能增强的操作,加入其他的业务处理,如日志、验证等处理。

主要就是动态、代理两个词的理解。

动态 :指的是可以动态地代理多个目标对象,而不只是一个,是可以灵活的,所以是动态的。

代理 :指的是可以代替目标对象去执行目标对象要执行的方法,并且可以在不修改目标对象方法的同时加入自己需要的业务处理,也就是功能增强。

举个生活中的例子:比如你要租房找房子,那你就是那个目标对象,你要做的事情就是找房子,但是你可能不是自己亲自去找房子,而是去找中介帮你找房子,那中介就是代理对象,代理对象可以代替你去完成你需要做的事情(找到房子),而且在完成你的目标(找到房子)后,中介会向你收取费用(功能增强),这个本来不在你的目标之内,所以这个是代理对象额外加入的其他业务处理。这样代理对象就不仅完成了目标对象的事情,并可以在这期间中加入其他业务处理。

图解:

说完概念性的知识,现在来看下具体的例子。

需求:模拟计算器执行加减乘除运算

一个数学运算的接口:

package com.zhbit.proxy;

/**
 * @author XieGuanPei
 * @Description 数字计算接口
 * @date 2020/9/2 - 6:26
 */
public interface Calculate {
    int add(int i, int j);
    int sub(int i, int j);
    int mul(int i, int j);
    int div(int i, int j);
}

实现类(目标类):

package com.zhbit.proxy;

/**
 * @author XieGuanPei
 * @Description 目标类
 * @date 2020/9/2 - 6:24
 */
public class Calculator implements Calculate{
    @Override
    public int add(int i,int j) {
        return i + j;
    }
    @Override
 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值