JDK动态代理机制
实现代码
接口类
1 package com.lzp.springbootdemo.proxy.dynamicproxy; 2 3 /** 4 * @Author 14715 5 * @Date 2022/5/9 11:39 6 * @Version 1.0 7 * 8 * 厂家 9 */ 10 public interface UFactory { 11 12 // 卖U盘 13 double soldU(); 14 15 }
实现类
1 package com.lzp.springbootdemo.proxy.dynamicproxy; 2 3 /** 4 * @Author 14715 5 * @Date 2022/5/9 12:19 6 * @Version 1.0 7 */ 8 public class UFactoryImpl implements UFactory{ 9 10 @Override 11 public double soldU() { 12 return 25.5; 13 } 14 15 }
动态代理类
1 package com.lzp.springbootdemo.proxy.dynamicproxy; 2 3 import java.lang.reflect.InvocationHandler; 4 import java.lang.reflect.Method; 5 import java.lang.reflect.Proxy; 6 7 /** 8 * @Author 14715 9 * @Date 2022/5/9 12:19 10 * @Version 1.0 11 */ 12 public class ProxyFactory implements InvocationHandler { 13 14 private Object target; 15 16 public ProxyFactory(Object target) { 17 this.target = target; 18 } 19 20 @Override 21 public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { 22 System.out.println("代理对象调用开始"); 23 Object result = method.invoke(target, args); 24 // 增强功能 25 if (result != null) { 26 result = (double) result + 10; 27 } 28 System.out.println("代理对象调用结束"); 29 return result; 30 } 31 32 public <T> T getDynamicInstance(Class<T> ... classes) { 33 return (T) Proxy.newProxyInstance(target.getClass().getClassLoader(), classes, this); 34 } 35 36 }
测试类
1 package com.lzp.springbootdemo.proxy.dynamicproxy; 2 3 /** 4 * @Author 14715 5 * @Date 2022/5/9 12:22 6 * @Version 1.0 7 */ 8 public class ClientTest { 9 public static void main(String[] args) { 10 ProxyFactory proxyFactory = new ProxyFactory(new UFactoryImpl()); 11 UFactory dynamicInstance = proxyFactory.getDynamicInstance(UFactory.class); 12 double v = dynamicInstance.soldU(); 13 System.out.println(v); 14 } 15 }
测试效果
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能