代理模式扩展(二):动态代理

本文探讨了动态代理在Java中的应用,重点在于如何通过动态代理实现AOP编程,以追踪对象的方法调用为例,展示了其简化代码的优势。并提供了一种通用的封装Proxy.newInstance方法的实现方式。
摘要由CSDN通过智能技术生成

代理模式扩展(二):动态代理

动态代理就是要再运行过程中决定代理类实现哪个接口,应用了Java的反射机制的Proxy类,如果还不熟悉这个类的读者,请跳转到我的另一篇博客先学习一下。点击这里跳转

为什么要使用动态代理?

动态代理,最大的用处就是用来实现AOP(面向切面编程),在不改变已有代码结构的情况下,增强或控制对象的行为。

举例:追踪一个对象的方法调用

这个例子很简单,很显然是要增强对象的行为,再多说一句,这里使用普通的代理模式也可以实现,但是没有使用动态代理简单(对于普通代理来说,调用每个方法之前都要输出方法的名字,这样会又很多重复操作)。

使用动态代理代理要追踪的对象,然后在方法调用之前输出方法名即可。

class ProxyHandler implements InvocationHandler{

    private Object realSubject;

    public ProxyHandler(Object realSubject) {
        this.realSubject = realSubject;
    }
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        //在调用前输出方法的名字
        System.out.println(method.getName());
        //间接的调用realSubject.doSomething
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值