对应静态代理,真实主题和代理主题共用同一个接口,代理主题必须现实对真实主题的引用,所以导致没一个真实主题必须写一个代理类,当越来越多的时候,这种就比较庞大也不好维护了!
JDK动态代理利用JDK来实现动态代理
首先让我们来了解一下如何使用 Java 动态代理。具体有如下四步骤: 通过实现 InvocationHandler 接口创建自己的调用处理器; 通过为 Proxy 类指定 ClassLoader 对象和一组 interface 来创建动态代理类; 通过反射机制获得动态代理类的构造函数,其唯一参数类型是调用处理器接口类型; 通过构造函数创建动态代理类实例,构造时调用处理器对象作为参数被传入。
看例子:
Subject是接口, JDK动态代理只能是基于接口
package aop; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; /** * jdk proxy * * @author * @version 1.0 * @since 1.0 */ public class JDKProxy implements InvocationHandler { private Subject target; public JDKProxy(Subject target) { this.target = target; } public Subject newInstance() { return (Subject) Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), this); } public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("--- in jdk proxy invoke----"); return method.invoke(target, args); } public static void main(String[] args) { Subject proxy = new JDKProxy(new RealySubject()).newInstance(); proxy.handler("xxxxxxxxxxxxxxx"); } }
解决了 静态代理中 对每个主题类都要写不同的代理的问题
相关推荐
Java中的代理模式--静态代理和动态代理 Java中的代理模式--静态代理和动态代理
设计模式--代理模式设计模式--代理模式设计模式--代理模式设计模式--代理模式设计模式--代理模式
设计模式专题之(六)代理模式---设计模式代理模式示例代码(python--c++)
动态代理的代码例子 里面敲好了注释 搭配文章观看更好
动态代理设计模式-源码
代理模式与动态代理--Spring AOP原理.doc
这份文件讲诉了代理模式-分布式计算,是以例子的形式进行讲诉的,希望可以帮助学习的人!
JAVA-设计模式-结构型模式-代理模式
c++设计模式-结构型模式-代理模式,qt工程,c++源码,简单示例
《C++20设计模式》学习笔记-第12章代理模式-配套代码
2 代理模式-课程内容.rar
2 代理模式-MOOC课程内容.pdf
java模式设计-代理模式之动态代理.ppt
自己写的Java的代理模式的实现,有兴趣的可以下载看看
桥接模式-代理-iOS
Java编程模式-代理模式。介绍了静态代理模式和动态代理模式
设计模式-代理模式(讲解及其实现代码)
- 代理模式 - 静态代理与动态代理 - 常见的动态代理实现 - JDK Proxy - CGLIB - JDK Proxy 和 CGLIB 的对比 - 动态代理的实际应用 - Spring AOP 说在前面:今天我们来聊一聊 Java 中的代理,先来聊聊故事...
java常用设计模式-代理模式