代理模式(静态代理+动态代理)
静态代理
在不改变原有代码的基础上, 增加一些功能
纵向开发:dao - service - controller - 前端 横向开发:AOP 代理实现
动态代理
InvocationHandler Proxy在reflect包下
InvocationHandler是由代理实例的调用处理程序实现的接口。
每个代理实例都有一个关联的调用处理程序。
当在代理实例上调用方法时,方法调用将被编码并分派到其调用处理程序的invoke方法。
Proxy提供了创建动态代理类和实例的静态方法,它也是由这些方法创建的所有动态代理类的超类。
使用
生成代理类(需要传入一个真实的对象[已经实现接口的] ,返回一个动态生成的类)

//利用这个类,自动生成代理类 public class Proxy_ implements InvocationHandler{ //被代理的接口 private Object object; public void setObject(Object object) { this.object = object; } //生成得到的代理类 public Object getProxy(){ return Proxy.newProxyInstance(this.getClass().getClassLoader(), object.getClass().getInterfaces(),this); } @Override //处理代理实例(自动) ,返回结果 public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { // seeHouse(); log(method.getName()); //(拓展)获取执行的方法名字 Object result=method.invoke(object,args); return result; } public void log(String msg){ System.out.println("执行了"+msg+"方法"); } }
相关接口 (不同房东共有的方法)
具体实现的类(可以有很多个房东)
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术