`
iluoxuan
  • 浏览: 579867 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

代理模式-------动态代理

 
阅读更多

对应静态代理,真实主题和代理主题共用同一个接口,代理主题必须现实对真实主题的引用,所以导致没一个真实主题必须写一个代理类,当越来越多的时候,这种就比较庞大也不好维护了!

 

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中的代理模式--静态代理和动态代理

    JAVA动态代理模式-.pdf

    JAVA动态代理模式-.pdf

    代理模式与动态代理--Spring AOP原理.doc

    代理模式与动态代理--Spring AOP原理.doc

    代理模式-分布式计算

    这份文件讲诉了代理模式-分布式计算,是以例子的形式进行讲诉的,希望可以帮助学习的人!

    JAVA-设计模式-结构型模式-代理模式

    JAVA-设计模式-结构型模式-代理模式

    Java设计模式-代理模式例子

    在Java中,代理模式主要有静态代理和动态代理两种实现方式。 1. 静态代理:在编译时就已经确定了代理类与目标类的关系。通常,代理类会实现和目标类相同的接口,以便于在代理类中调用目标类的方法。这种方式的缺点...

    《C++20设计模式》学习笔记-第12章代理模式-配套代码

    《C++20设计模式》学习笔记-第12章代理模式-配套代码

    Java变成模式-代理模式

    Java编程模式-代理模式。介绍了静态代理模式和动态代理模式

    设计模式-代理模式(讲解及其实现代码)

    设计模式-代理模式(讲解及其实现代码)

    【Java设计模式-源码】动态代理模式:实现无缝对象拦截

    - Java中的动态代理模式是一种特殊形式的代理,它是一种灵活和动态的方法,用于拦截和操作方法调用。通过使用动态代理,开发人员可以在不修改原始类代码的情况下实现额外的功能。这在需要增强现有功能的场景中特别...

    Java代理模式Java动态代理

    ### Java代理模式与Java动态代理详解 #### 一、代理模式概述 代理模式是一种软件设计模式,它在客户端和目标对象之间提供了一种间接层。这种模式的主要目的是控制客户端对目标对象的访问,并且可以在不修改原有...

    ios-代理模式--demo.zip

    事情的经过是这样的 ,王老板刚开始创业凡事都要亲力亲为,他要和员工谈心,给员工打电话,给员工发工资,现在呢王老板公司牛B了,于是他雇了马秘书来帮助他完成给员工小宋打电话和发工资的工作(PS:我是小白,欢迎...

    设计模式精解-GoF-23种设计模式解析--附C++源代码

    - 代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。 - 外观模式(Facade):提供一个统一的接口,用来访问子系统的一组接口。 - 适配器模式(Adapter):使两个接口不兼容的类能够协同工作。 ...

    JAVA设计模式例程-代理模式

    代理模式是一种常用的设计模式,它在软件开发中起到了桥梁的作用,允许我们为一个对象提供一个替代品或代表,以便在不改变原有对象的基础上增加额外的功能或控制访问。在这个"JAVA设计模式例程-代理模式"的压缩包中...

    Java设计模式----通俗易懂版

    - 代理模式:为其他对象提供一种代理以控制对这个对象的访问。 3. 行为型设计模式: - 责任链模式:将请求沿着处理者链传递,直到被某个对象处理。 - 命令模式:将请求封装为一个对象,以便使用不同的请求、队列...

    Java 代理 代理模式 静态代理与动态代理 常见的动态代理实现 .md

    代理模式可以进一步细分为静态代理和动态代理。 - **静态代理**:在程序编译时就已经确定代理类的具体实现方式。这意味着每次需要代理不同的操作时,都需要修改代理类的代码,这违反了软件工程中的开闭原则。 - **...

    用Java实现的代理模式之动态代理

    在Java中,代理模式有静态代理和动态代理两种实现方式。本篇将重点讨论"动态代理",这是一种在运行时创建代理对象的技术,使得我们可以在程序运行过程中,根据需要动态地生成具有额外功能的代理类。 动态代理主要由...

    java设计模式视频教程-代理模式.rar

    代理模式分为静态代理和动态代理两种类型。 1. 静态代理:在编译时,代理类和原始类的关系就已经确定,需要手动创建代理类并实现与原始类相同的接口。这种方式相对简单,但缺点是如果原始类接口发生变化,代理类也...

    Java 动态代理详解(代理模式+静态代理+JDK动态代理+CGLIB动态代理)

    Java 动态代理详解(代理模式+静态代理+JDK动态代理+CGLIB动态代理) Java 动态代理是 Java 编程语言中的一种强大工具,广泛应用于 Spring AOP、Hibernate 数据查询、测试框架的后端 mock、RPC 远程调用、Java 注解...

    c# 设计模式实例教程

    代理模式-水果的销售 单例模式-果园喷洒杀虫剂 访问者模式-果农培育果树 工厂方法模式-果园引进新品种 观察者模式-果园的监控 简单工厂模式-果园种植水果 建造者模式-建造不同的果园 原型模式-建造同样的果园 桥接...

Global site tag (gtag.js) - Google Analytics