对应静态代理,真实主题和代理主题共用同一个接口,代理主题必须现实对真实主题的引用,所以导致没一个真实主题必须写一个代理类,当越来越多的时候,这种就比较庞大也不好维护了!
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中的代理模式--静态代理和动态代理
JAVA动态代理模式-.pdf
代理模式与动态代理--Spring AOP原理.doc
这份文件讲诉了代理模式-分布式计算,是以例子的形式进行讲诉的,希望可以帮助学习的人!
JAVA-设计模式-结构型模式-代理模式
在Java中,代理模式主要有静态代理和动态代理两种实现方式。 1. 静态代理:在编译时就已经确定了代理类与目标类的关系。通常,代理类会实现和目标类相同的接口,以便于在代理类中调用目标类的方法。这种方式的缺点...
《C++20设计模式》学习笔记-第12章代理模式-配套代码
Java编程模式-代理模式。介绍了静态代理模式和动态代理模式
设计模式-代理模式(讲解及其实现代码)
- Java中的动态代理模式是一种特殊形式的代理,它是一种灵活和动态的方法,用于拦截和操作方法调用。通过使用动态代理,开发人员可以在不修改原始类代码的情况下实现额外的功能。这在需要增强现有功能的场景中特别...
### Java代理模式与Java动态代理详解 #### 一、代理模式概述 代理模式是一种软件设计模式,它在客户端和目标对象之间提供了一种间接层。这种模式的主要目的是控制客户端对目标对象的访问,并且可以在不修改原有...
事情的经过是这样的 ,王老板刚开始创业凡事都要亲力亲为,他要和员工谈心,给员工打电话,给员工发工资,现在呢王老板公司牛B了,于是他雇了马秘书来帮助他完成给员工小宋打电话和发工资的工作(PS:我是小白,欢迎...
- 代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。 - 外观模式(Facade):提供一个统一的接口,用来访问子系统的一组接口。 - 适配器模式(Adapter):使两个接口不兼容的类能够协同工作。 ...
代理模式是一种常用的设计模式,它在软件开发中起到了桥梁的作用,允许我们为一个对象提供一个替代品或代表,以便在不改变原有对象的基础上增加额外的功能或控制访问。在这个"JAVA设计模式例程-代理模式"的压缩包中...
- 代理模式:为其他对象提供一种代理以控制对这个对象的访问。 3. 行为型设计模式: - 责任链模式:将请求沿着处理者链传递,直到被某个对象处理。 - 命令模式:将请求封装为一个对象,以便使用不同的请求、队列...
代理模式可以进一步细分为静态代理和动态代理。 - **静态代理**:在程序编译时就已经确定代理类的具体实现方式。这意味着每次需要代理不同的操作时,都需要修改代理类的代码,这违反了软件工程中的开闭原则。 - **...
在Java中,代理模式有静态代理和动态代理两种实现方式。本篇将重点讨论"动态代理",这是一种在运行时创建代理对象的技术,使得我们可以在程序运行过程中,根据需要动态地生成具有额外功能的代理类。 动态代理主要由...
代理模式分为静态代理和动态代理两种类型。 1. 静态代理:在编译时,代理类和原始类的关系就已经确定,需要手动创建代理类并实现与原始类相同的接口。这种方式相对简单,但缺点是如果原始类接口发生变化,代理类也...
Java 动态代理详解(代理模式+静态代理+JDK动态代理+CGLIB动态代理) Java 动态代理是 Java 编程语言中的一种强大工具,广泛应用于 Spring AOP、Hibernate 数据查询、测试框架的后端 mock、RPC 远程调用、Java 注解...
代理模式-水果的销售 单例模式-果园喷洒杀虫剂 访问者模式-果农培育果树 工厂方法模式-果园引进新品种 观察者模式-果园的监控 简单工厂模式-果园种植水果 建造者模式-建造不同的果园 原型模式-建造同样的果园 桥接...