Java JDK 动态代理代码示例(Demo)

本文详细介绍了Java JDK动态代理的使用,包括代码示例、代码分析及动态代理的好处。通过示例展示了如何创建业务接口、实现类、InvocationHandler以及调用者,解释了动态代理在运行时生成代理对象的机制,以及如何实现面向切面编程、透明代理、减少重复代码、松耦合和灵活性等优点。
摘要由CSDN通过智能技术生成

        在很长的一段时间里,我对JDK动态代理的感知都比较模糊,每当要用的到的时候就不清楚代码怎么写,然后就只能网上找代码示例,Ctrl+c/Ctrl+v,最后又忘记了。其次每次找的都有点浪费时间,不是要关注就是要订阅,略显麻烦,所以这次就自己写一个加强记忆,也方便查找。

一、代码示例

        要使用JDK动态代理,唯一麻烦的就是至少要3个类(或者是接口),不包含调用者:

        1. 业务接口,示例中的  Worker 接口;

        2. 业务接口实现类,示例中的  HouseLessWorker 类;

        3. InvocationHandler 接口实现类,其实这个类的目的就是增强对业务接口的实现,示例中的  EstateAgent 类;

        4. 调用者,示例中的 ProxyTest 类。

        

 Worker 代码:

package org.example.proxy;

public interface Worker {

    void rentHouse();
}

HouseLessWorker 代码:

package org.example.proxy;

public class HouseLessWorker implements Worker {

    @Override
    public void rentHouse() {
        System.out.println("Want to rent a single room of about 5 square meters");
    }
}

EstateAgent 代码:

package org.example.proxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

public class EstateAgent implements InvocationHandler {

    private final Worker worker;

    public EstateAgent(Worker worker) {
        this.worker = worker;
    }

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println("The worker's salary is small");
       
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值