Java代理模式简介

代理模式简介 在编译时就已经确定了被代理类和具体的代理类,在代码中直接定义一个具体的实现类作为目标对象和一个对应的具体实现类作为代理对象。代理对象充当了客户端和目标对象之间的中介,可以在不改变目标对象的情况下增加额外的功能或限制访问。当客户端通过代理对象调用方法时,实际上会转发给真实对象的相应方法,并在前后执行额外操作。代理模式通过引入代理类来隐藏真实对象,并提供了与真实对象相同的接口,使得客户端无需直接与真实对象交互。的反射机制和字节码生成技术,在内存中创建一个新的代理类,并在运行时将方法调用转发给真实对象。 阅读详情

代理模式是Java常见的设计模式之一。所谓代理模式是指客户端并不直接调用实际的对象,而是通过调用代理,来间接的调用实际的对象。

代理模式分为静态代理模式,动态代理模式两种。(在生活中代理模式也是很常见的,例如火车飞机票代售)

下来将进行详细的讲解:

静态代理:

(静态代理在使用时,需要定义接口或者父类,被代理对象与代理对象一起实现相同的接口或者是继承相同父类)

代码实例如下:

公共接口IUserDao:

public interface IUserDao{   //这里定义代理类与被代理类都要实现的接口
   void save();
}IUserDao{   //这里定义代理类与被代理类都要实现的接口
   void save();
}
目标类UserDao:
public class UserDao implements IUserDao{ //定义要被代理的目标类,并实现接口
    public void save() {
        System.out.println("----已经保存数据!----");
    }
}
定义代理类UserDaoProxy:UserDaoProxy:

 
public class UserDaoProxy implements IUserDao{
    //接收保存目标对象
    private IUserDao target;
    public UserDaoProxy(IUserDao target){
        this.target=target;
    }
    public void save() {
        System.out.println("开始事务...");
        target.save();//执行目标对象的方法
        System.out.println("提交事务...");
    }
}

测试工具类Test:

public class Test {
    public static void main(String[] args) {
        //目标对象
        UserDao target = new UserDao();
        //代理对象,把目标对象传给代理对象,建立代理关系
        UserDaoProxy proxy = new UserDaoProxy(target);
        proxy.save();//执行的是代理的方法
    }
}

 

静态代理优点:

1.优点:可以做到在不修改目标对象的功能前提下,对目标功能扩展.

2.缺点:  因为代理对象需要与目标对象实现一样的接口,所以会有很多代理类,类太多.同时,一旦接口增加方法,目标对象与代理对象都要维护.

 

 

 

高薪程序员&面试题精讲系列104之你熟悉Java中的哪些代理模式?静态代理与动态代理有什么区别?Cglib熟悉吗? 一. 面试题及剖析 1. 今日面试题 你熟悉代理模式吗? 静态代理与动态代理有什么区别? 动态代理和Cglib代理的实现及区别? 2. 题目剖析 壹哥在上一篇文章中给大家介绍了Spring框架,把框架的基本内容带大家梳理总结了一下。壹哥跟大家说过,Spring的一个重点就是AOP,我们在项目中经常使用AOP,面试时也经常考察AOP,比如面试官顺嘴就会来一句,你项目中哪里使用过AOP?AOP是怎么实现的?AOP的原理是什么?....... 这些都是常见的面试题,如果这样的问题你答不出来,那面 阅读详情

相关推荐

如何在SendWS实现WhatsApp批量群发设置管理?WhatsApp群发超链有什么好处?

WhatsApp群发顾名思义就是对WhatsApp上的用户好友进行群发消息,给他们群发想要发送的消息。及时不认识对方也可以对他进行群发超链。越来越多做跨境出海运营的工作者利用WhatsApp进行营销推广,因为他能做到低成本高回报,向客户发送消息曝光自己的品牌或产品,使得更多人了解,拓展新客户,提高成交率。

SendWS-WS云控群控拓客聊天翻译 1169

Java 设计模式-代理模式

代理模式(Proxy Pattern)是设计模式中的一种结构型模式,其核心思想是通过创建一个代理对象来间接访问实际对象(也称为主题对象),从而在不改变实际对象的前提下,为实际对象添加额外的功能或控制。代理模式根据实现方式可分:某个类必须有实现的接口,如果某个类没有实现接口,那么这个类就不能通过 JDK 产生动态代理了静态代理动态代理。

精神小牛马 3728

C++动态规划详解

动态规划思想 一、动态规划概念: 动态规划(dp)是研究多步决策过程最优化问题的一种数学方法。在动态规划中,为了寻找一个问题的最优解(即最优决策过程),将整个问题划分成若干个相应的阶段,并在每个阶段都根据先前所作出的决策作出当前阶段最优决策,进而得出整个问题的最优解。即记住已知问题的答案,在已知的答案的基础上解决未知的问题。 在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后

weixin_51951103的博客 2万+

简单理解Java的代理模式(附带实例)

文章目录1. 代理模式2. 静态代理3. 动态代理3.1. JDK 动态代理机制3.1.1. 介绍3.1.2. JDK 动态代理类使用步骤3.1.3. 代码示例3.2. CGLIB 动态代理机制3.2.1. 介绍3.2.2. CGLIB 动态代理类使用步骤3.2.3. 代码示例3.3. JDK 动态代理和 CGLIB 动态代理对比4. 静态代理和动态代理的对比5. 总结 1. 代理模式 代理模式是一种比较好的理解的设计模式。简单来说就是 我们使用代理对象来代替对真实对象(real object)的访问,这样

干嘛卷来卷去的博客 821

HFSS实战:手把手教你设计一款小型化圆极化微带天线(附仿真文件)

本文详细介绍了使用HFSS设计小型化圆极化微带天线的完整流程,包括工程初始化、辐射贴片设计、仿真设置与优化等关键步骤。通过实战案例,帮助工程师掌握圆极化天线设计技巧,解决轴比控制和耦合馈电匹配等核心问题,适用于物联网终端和便携式设备应用。

weixin_32770423的博客 339

CVE-2017-7921漏洞深度剖析:从身份验证绕过到实战复现与防御

身份验证是Web应用安全的核心防线,其逻辑缺陷可能导致严重的未授权访问。身份验证绕过漏洞的原理在于,应用程序对特定请求路径或API接口的访问控制策略存在疏漏,未能执行有效的会话或令牌校验。这类漏洞的技术价值在于,攻击者无需凭证即可直接访问受保护的后端资源,从而获取敏感信息或执行未授权操作,对系统机密性、完整性构成直接威胁。在物联网和安防监控领域,大量网络摄像头、录像机等设备暴露于公网,其Web管理界面便成为常见攻击面。本文聚焦于安防设备中一个经典的CVE-2017-7921身份验证绕过漏洞,通过剖析其技术原

WGH100817的博客 471

java代理模式简介

代理模式是一种设计模式,简单说即是在不改变源码的情况下,实现对目标对象的功能扩展。 比如有个歌手对象叫Singer,这个对象有一个唱歌方法叫sing()。复制代码1 public class Singer{2 public void sing(){3 System.out.println("唱一首歌");4 } 5 }复制代码假如你希望,通过你的某种方式生产出来的歌手对象,在唱歌前后还要想观众问好和答谢,也即对目标对象Singer的sing方法进行功能扩展。复制代码1 ..

weixin_57763462的博客 187

2、Minikube安装Ingress

文章目录前言一、Ingress安装二、Ingress Demo1.创建一个pod和service2.部署ingress3.添加minikube域名映射三、遇到的坑 前言 上篇介绍了Minikube的安装,本篇介绍一下如何在Minikube中安装Ingress。 一、Ingress安装 Ingress安装很简单,Minikube里面带了Ingress附件。 安装Ingress minikube addons enable ingress 禁用Ingress minikube addons disa

star_apple的博客 3071

Java代理模式及应用(一)代理模式介绍

1. 什么是代理模式提供了对目标对象另外的访问方式;即通过代理对象访问目标对象,这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。 这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法我们可以通过下面两个图来大概了解下代理模式:目标对象:

Kenny的专栏 467

H3C BGP联盟实验

bgp,bgp联盟,bgp公认团体属性,

一只懒羊羊 970

Loki 分布式日志中心服务

分布式日志中心 Loki + Promtail + Grafana

原名又逢乱世。不要放下学习的脚步,毕竟比天天打牌、钓鱼、打游戏更能从内在充实自己。 2353

Java代理模式

代理模式 23中(Gof)中代理模式中的一种,AOP本身就是基于动态代理实现的,所以掌握了代理模式对AOP的学习很有帮助,所以先讲下代理模式 1.静态代理模式 若代理类在程序运行前就已经存在,那么这种代理方式被成为 静态代理 ,这种情况下的代理类通常都是我们在Java代码中定义的。 通常情况下, 静态代理中的代理类和目标类会实现同一接口或是派生自相同的父类。 1.1 创建接口 /** * 定义公共...

波波烤鸭的博客 6099

手把手教你学RDMA驱动开发专栏--第7章 队列对(QP)与数据传输实现​7.3 完成队列(CQ):事件通知机制与轮询/中断模式

本章详细探讨了RDMA驱动中完成队列(CQ)的事件通知机制,重点分析了轮询与中断两种模式的实现原理及优化策略。CQ作为操作结果的报告载体,其核心功能包括结果反馈、事件通知和资源同步。轮询模式通过主动查询实现低延迟,适合高性能场景;中断模式通过被动通知节省CPU资源,适用于低频事件处理。驱动实现需考虑CQ溢出防护、多QP共享同步等关键问题,并提供事件通道机制将CQE传递给用户态。通过对比两种模式的优缺点及适用场景,揭示了RDMA系统在性能与资源间的权衡机制。

MHD0815的博客 396

Java设计模式之代理模式的简介

代理模式 代理模式的定义:为另一个对象提供一个替身或占位符,以控制对这个对象的访问。(Head First设计模式给出的定义) 为什么要用代理模式         动态代理技术是整个Java技术中最重要的一个环节,它是学习Java框架的基础,不会动态代理技术,学习Spring框架是学不明白的。 动态代理技术就是用来产生...

马旭辉博客 786

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

JAVA动态代理和代理模式简介

1、背景 在项目中,可能遇到一种情况就是原来代码中有个地方调用了类A的方法,现在要在类A之前或者之后进行别的业务逻辑的处理。此时最好不要直接对该方法进行修改,因为这个类可能在别的地方也被调用,只是你不清楚而已,你一改可能影响到别的项目,所以代理模式呼之欲出。 2、代理和代理模式 代理分为动态代理和静态代理,动态代理是根据需要通过反射机制在程序运行期动态的为目标对象创建代理对象,代理的行为可以代理多...

huqianlei的博客 199

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Java 代理模式简介

wwxy1995的博客 162

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

20210507—Java_Proxy—代理模式简介

Proxy学习记录 一、代理模式 代理是基于反射机制,使用代理对象,是为了在不修改目标对象的基础上,增强主业务逻辑 1、什么是代理 举例: 代购, 中介,换ip,商家等等 比如有一家美国的大学, 可以对全世界招生。 留学中介(代理) 留学中介(代理): 帮助这家美国的学校招生, 中介是学校的代理, 中介是代替学校完成招生功能。 代理特点: 1. 中介和代理他们要做的事情是一致的: 招生。 2. 中介是学校代理, 学校是目标。 3. 家长-

Terio的博客 301

Java代理模式(静态模式&动态模式简介)

在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。意图:为其他对象提供一种代理以控制对这个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。为了保持行为的一致性,代理类和委托类通常会实现相同的接口,所以在访问者看来两者没有丝毫的区...

因你是玫瑰色的你 476

设计模式之代理模式ProxyPattern(六)

1、什么是代理模式?代理模式是23种设计模式中的一种。代理模式是一种结构型设计模式,它允许为其他对象提供一个替代品或占位符,以控制对这个对象的访问。2、代理模式的角色构成抽象主题(Subject):定义了真实主题和代理主题的共同接口,这样代理类可以通过实现该接口来代理真实主题。真实主题(Real Subject):定义了代理所代表的真实对象。代理(Proxy):持有对真实主题的引用,并实现了与真实主题一样的接口,客户端通过代理来访问真实主题,同时可以在访问真实主题前后进行一些额外操作。

徐泗空的博客 1462

java设计模式之 代理模式【Proxy Pattern】 详解

首先我们举个例子说明一下什么是策略模式: 什么是代理模式呢?我很忙,忙的没空理你,那你要找我呢就先找我的代理人吧,那代理人总要知道 被代理人能做哪些事情不能做哪些事情吧,那就是两个人具备同一个接口,代理人虽然不能干活,但是被 代理的人能干活呀。 比如西门庆找潘金莲,那潘金莲不好意思答复呀,咋办,找那个王婆做代理,表现在程序上时这样的: 先定义一种类型的女人: package com.cbf4lif...

蛋蛋淡淡定的庄园 299

代理模式-ProxyPattern

前言: 代理模式与装饰者模式: 相同点: 1. 前提条件:装饰者(代理者)与被装饰者(委托者)要继承相同的父类或实现相同的接口。 2. 都可以增强某个类的方法,对程序进行扩展。 不同点: 1. 代理者是为某个对象添加一个代理,以控制对这个对象的访问。而装饰者增强某个类的方法。 2. 代理可以在调用核心方法之前做前置处理...

Jason Blog 197

代理模式(ProxyPattern)

定义 通过一个代理对象或者占位符来控制对原对象的访问。 结构图 角色与理解 代理模式共分为四种角色: Subject(抽象主题角色):真实主题角色与代理主题角色的共同父类,可以是具体类、抽象类、接口,客户端针对抽象主题角色编程 RealSubject(真实主题角色):实现具体业务方法的类,被代理主题角色调用 Proxy(代理主题角色):持有真实主题角色的引用,在调用真实主题角色的具体业务方法之前或者之后添加其它操作 客户端面对抽象主题角色编程,调用抽象主题角色实际上调用的是代

码农架构 421

代理模式(proxyPattern)

定义  为其他对象提供一种代理以控制这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理模式可以在客户端与目标对象之间起到中介的作用。分类  1.静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。  2.动态代理:在程序运行时,运用反射机制动态创建而程。UML...

zz_ddup的博客 221

代理模式详解 (附java语言源码)

代理模式(Proxy Pattern): 为其他对象提供一个代理以控制对这个对象的访问。(Provide a surrogate or placeholder foranther object to control access to it.) 可以详细控制访问某个(某类)对象的方法,在调用这个方法前做前置处理,调用这个方法后做后置处理。 分类: 静态代理(静态定义代理类) 动态代理(动态生...

数据知道的博客 1万+

Java开发之设计模式--代理模式(Proxy Pattern)

什么是代理模式呢?我很忙,忙的没空理你,那你要找我呢就先找我的代理人吧,那代理人总要知道被代理人能做哪些事情不能做哪些事情吧,那就是两个人具备同一个接口,代理人虽然不能干活,但是被代理的人能干活呀。模拟场景:比如西门庆找潘金莲,那潘金莲不好意思答复呀,咋办,找那个王婆做代理。Java程序: 先定义一种类型的女人: package com.zanelove.proxy; /** * I'm glad

ZaneLove's blog 1075
上一篇: 数据库系统原理与应用温习心得(二)
下一篇: http与tcp简介、三次握手与四次挥手
乐交诤友
博客等级 码龄10年 5粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值