动态代理

一、什么是动态代理

A调用B,但不直接调用,A通过调用C,C再调用B,C在调用B的前后可以做一些自己的事情,比如说打日志、权限验证等,这样就把业务代码与系统代码分开,同时减少了A和B之间的耦合。
动态代理的经典应用是Spring AOP

二、动态代理作用

最终是学习AOP(面向切面编程),它与装饰者模式优点相似,它比装饰者模式还要灵活

三、动态代理方法

Object proxyObject = Proxy.newProxyInstance(ClassLoader classLoader,Class[] interfaces,InvocationHandler h);

    方法作用:动态创建实现了interface数组中所有指定接口的实现类对象
    参数:
    1.ClassLoader:类加载器!它是用来加载类的,把.class文件加载到内存中,形成Class对象
    2.Class[] interfaces:指定要实现的接口们
    3.InvocationHandler:代理对象的所有方法(个别不执行,getClass)都会调用InvocationHandler的invoke()方法

public Object invoke(Object proxy,Method method,Object [] agrs);
//这个invoke()方法在什么时候被创建!在调用代理对象所实现接口中的方法时
参数:
Object proxy //当前对象,即代理对象!(即在调用谁的方法)
Method method //当前被调用的方法(目标方法)
Object [] args //实参

四、增强

增强的手段:
1.继承
    被增强对象不能变
    增强内容不能变
2.装饰者模式
    被增强对象能变
    增强内容不能变
3.动态代理
    被增强对象能变
    增强内容 能变

目标对象:被增强的对象
代理对象:需要目标的对象,然后在目标对象上添加了增强后的对象
目标方法:增强的内容

代理对象=目标对象+增强

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值