java设计模式--代理模式(三)

情景对话玩转java设计模式 - 代理模式 最近一直在看一些框架的源码,发现到最后很多地方都用到代理,尤其是动态代理。例如SpringData jpa中EntityManager的创建过程。在23种设计模式中有一种模式就是代理模式,这里打算对这种模式整理一下,并从源码的角度分析一下对象是如何生成出来的。个人觉得这个模式是23种当中最难的一种,深研究的话需要追述到jvm,这里尽量讲明白,不足之处希望大家指正。 定义 所谓的代理,就是中介,也就是说给目标对象提供一个代理(中介)对象,并由这个中介对象去控制对目标对象的引用。这样做的好处是: 通过代理. 阅读详情

上一节讲了jdk动态代理,这节讲引入第三方jar包的动态代理


//CglibProxy.java

import java.lang.reflect.Method;

import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;

public class CglibProxy implements MethodInterceptor {

	private Enhancer enhancer = new Enhancer();
	
	public Object getProxy(Class clazz){
		//设置创建子类的类
		enhancer.setSuperclass(clazz);
		enhancer.setCallback(this);
		
		return enhancer.create();
	}
	
	/**
	 * 拦截所有目标类方法的调用
	 * obj  目标类的实例
	 * m   目标方法的反射对象
	 * args  方法的参数
	 * proxy代理类的实例
	 */
	@Override
	public Object intercept(Object obj, Method m, Object[] args,
			MethodProxy proxy) throws Throwable {
		System.out.println("日志开始...");
		//代理类调用父类的方法
		proxy.invokeSuper(obj, args);
		System.out.println("日志结束...");
		return null;
	}

}
//Train.java

public class Train {

	public void move(){
		System.out.println("火车行驶中...");
	}
}
//测试

public class Client {	
	public static void main(String[] args) {

		CglibProxy proxy = new CglibProxy();
		Train t = (Train)proxy.getProxy(Train.class);
		t.move();
	}
}
结果:

汽车开始行驶....
汽车行驶中....
汽车结束行驶....  汽车行驶时间:274毫秒!


晶振(晶体振荡器)测试方法详解 晶振测试方法分为无源和有源两种类型。无源晶振(两脚)需用示波器测试波形,重点关注正弦波形状、200mV-1.5Vpp幅值和频率精度;有源晶振(四脚)通电后直接输出方波。测试要点包括:示波器使用10X探头、AC耦合,带宽需5倍于晶振频率;万用表可初筛短路/开路;替换法是工程最有效方法。常见故障排查顺序:供电→复位→焊接→型号→负载电容→波形观察→更换晶振→MCU配置。负载电容需按公式计算匹配,示波器观察是核心测试手段。 阅读详情

相关推荐

Apple 网页 SRP 登录系列文章(四):Hashcash 工作量证明与完整登录流程

本文是Apple SRP登录系列文章的收官之作,重点解析了Apple独有的Hashcash工作量证明机制并展示了完整的登录流程实现。文章详细介绍了Hashcash的安全目的、格式标准、计算核心算法及难度评估方法,特别提供了Python实现代码。同时还讲解了如何动态获取服务器Hashcash参数以及建立容错机制。最后呈现了完整的Apple SRP登录主函数架构,为开发者提供了从理论到实践的全面指导。全文通过代码示例和流程分析,系统性地阐述了Apple安全登录机制的技术细节。

Sayid_Des的专栏 628

java设计模式(三)代理模式

常见的设计模式之代理模式为什么要用代理模式?静态代理模式静态代理总结:动态代理模式创建动态代理步骤动态代理总结 为什么要用代理模式? • 中介隔离作用:在某些情况下,一个客户类不想或者不能直接引用一个委托对象,而代理类对象可以在客户类和委托对象之间起到中介的作用,其特征是代理类和委托类实现相同的接口。 • 开闭原则,增加功能:代理类除了是客户类和委托类的中介之外,我们还可以通过给代理类增加额外的功...

qq_32827043的博客 348

Synopsys工具链实战:如何用VCS、DC、ICC和Calibre跑通你的第一个数字IC设计项目?

本文详细介绍了如何使用Synopsys工具链(VCS、Design Compiler、ICC和Calibre)完成数字IC设计项目,从RTL代码到GDSII版图的全流程。涵盖环境配置、RTL设计验证、逻辑综合、物理实现及签核验证等关键步骤,帮助工程师掌握高效的数字IC设计流程。

weixin_42525005的博客 196

不得不会的23种Java设计模式(三)——代理模式

不得不会的23种Java设计模式(三)——代理模式

yemuxiaweiliang的博客 405

TC3XX - MCAL知识点(二十七):SENT Mcal配置及代码实战(单边半字节传输协议)

SENT协议只有一根线,异步传输!Sent协议的全称为Single Edge Nibble Trans .isson,单边半字节传输协议,是一种单线异步串行通信协议。Sent报文包含8个Nibble和一个校准位如图1所示,每一个Nibble数据被编码成PWM方式。设计这种协议的目的是用在与汽车ECU快速交互信息的传感器上,以此来取代低精确度的10bit AD和PWM。Sent是一种点对点的单方向从传感器到控制端的协议,控制器不需要同步信号。

梦想技术家 2271

华为OD机试真题 新系统【小花获胜的奶茶】

华为OD机试真题 新系统【小花获胜的奶茶】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【小花获胜的奶茶】多语言题解。

qq_45776114的博客 382

设计模式 (三)代理模式 JAVA

设计模式 (三)代理模式 JAVA

qq_50909707的博客 358

安卓中蓝牙免提HFP的一些分析

最近看了一些大牛的博客,无不提到了技术分享的重要性,的确,分享自己的知识不仅仅是与他人讨论并相互提高的过程,更是对自己知识的梳理。希望自己能以此为契机,形成周期性博客分享的习惯。 文章标题为HFP的一些分析,HFP(Hand Free Profile)主要定义了安卓中与接打电话相关的一些功能的实现。本文主要介绍这其中对于HFP非常重要的Service Level Connection的建立。首先...

底层码农 770

java设计模式(三)——代理模式

一、代理模式 定义: 为其他对象提供一种代理控制对这个对象的访问。 **使用场景: **当无法或者不想访问某个对象,或者访问某个对象存在困难时可以通过一个代理对象来间接访问。为了保证客户端使用的透明性,委托对象与代理对象需要实现相同的接口。 代理模式分为静态代理和动态代理,先说说静态代理。 1.静态代理 被代理对象和代理对象都需要实现的接口。 public interface IBuySomething { void buy(String string); } 被代理对象 public class

zzq2006的博客 310

osgEarth 球上显示地形数据库

osgEarth 球上显示地形数据库 本文展示了一种由DSM和DEM得到Osgb工程,并在osgEarth球上显示的方法。其中DSM、DOM到Osgb工程的转换由VPB(VirtualPlanetBuilder)来实现,并采用Model图层将Osgb工程在球上显示。 本文主要解决一下问题: VPB编译 VPB生成地形 地形在球上显示 目录 1 前言 2 VPB编译与使用 3 地形在osgEarth球上显示 内容 1 前言 VirtualPlanetBuilder是一个开源代码工具,用于根据

CPWWHSU的博客 2433

把 300 亿参数的 Qwen3-30B-A3B 塞进 16GB 手机:MoE、mmap 与内存轮转的完整拆解

这篇文章详细拆解了如何在16GB内存手机上运行305亿参数的Qwen3-30B-A3B大模型。作者通过MoE(专家混合)架构、内存映射(mmap)和专用NPU内存(rpcmem)的巧妙结合实现了这一"不可能"的任务。 核心原理在于:MoE模型将庞大的前馈网络拆分为128个专家,每个词只激活8个专家,97%的权重处于闲置状态;通过mmap技术按需加载当前需要的专家权重;同时利用NPU专用内存高效计算关键部分。三个关键开关(GGML_HEXAGON_MOE_PAGING=1、--mmap、GGML_CPU_RE

q742971636的博客 185

《设计模式三》Java代理模式实现

《设计模式三》动态代理和静态代理

qq_46091953的博客 388

Git下载与安装

一、Git下载 二、Git安装

欢迎订阅我的“JAVA全栈开发笔记(全)”专栏,价格优惠,仅需19.9元。 6万+

浅析JAVA设计模式之代理模式(三)

1. 抽象接口有多个方法的情况        在《浅析JAVA设计模式之代理模式(一)》(简称《一》)和《浅析JAVA设计模式之代理模式(二)》(简称《二》)中,抽象方法里面只有一个方法,如果有一个以上的方法需要代理,我们的代码又该如何写?1.1 静态代理的处理(1)现在改动一下《一》中的Subject.Java文件,增加一个方法。package StaticProxy; public inter...

minidrupal的专栏 1173

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

SAP B1中文培訓教材_SDK

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

JAVA设计模式之代理模式(三)

今天我们来聊聊代理模式,

xiaobu201314的博客 215

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

java设计模式之代理模式多种写法(三)

java设计模式之代理模式多种写法(三)

qq_40351360的博客 308

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

java常用设计模式(三)代理模式

一、代理模式 为某个对象提供一个代理,从而控制这个代理的访问。代理类和委托类具有共同的父类或父接口,这样在任何使用委托类对象的地方都可以使用代理类对象替代。代理类负责请求的预处理、过滤、将请求分配给委托类处理、以及委托类处理完请求的后续处理。 二、代理模式结构 UML类图: 由上图代理模式的结构为: 抽象角色: 真实对象和代理对象的共同接口。 代理角色: 代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象。同时,代理对象可以在执

黄沙客栈 265

Java/Android设计模式<三> 代理模式

代理模式在我看来是android中最常见,比较重要的一个设计模式;代理模式实际上就是设置了一个新的对象(中介),也可以理解为真实对象的替身;1.代理模式的组成://抽象主题 真实主题和代理主题的共同继承的接口public interface Subject { void operation();}//真实主题public class RealSubject implements Subjec

soullines的博客 937

Java设计模式(三) -- 代理模式

        代理是一种设计模式,即通过代理对象访问目标对象,这样可以在目标对象实现的基础上,增强额外的功能,即扩展目标类的功能。        通常编程中存在一种思想,即不要随意修改别人的代码或者方法,所以代理就可以在不修改目标代码的基础上扩展该目标类。代理模式的关键点在于代理对象和目标对象。代理对象对目标对象进行扩展,并会调用目标对象。        代理模式包含几个角色:        S...

m0_37920544的博客 209

Java程序性能优化 读书笔记(三)设计模式:代理模式

一、代理模式 代理模式也是一种很常见的设计模式。它使用代理对象完成用户请求,屏蔽用户对真实对象的访问。在现实中,使用代理的情况很普遍,而且原因也很多。比如,当事人因为某些隐私不方便出面,或者当事人不具备某些相关的专业技能,而需要一个职业人员来完成一些专业的操作,也可能由于当事人没有时间处理事务,而聘用代理人出面。 就如同现实中的代理一样,代理人被授权执行当事人的一些适宜,而无需当事人出面,从第

Invoker's Tower 468

彻底了解23种设计模式--11 代理模式

百知教育男哥经典spring系列教程 在学习spring过程中,百知哥哥 举了个例子,将 小李 小红 小红友 三人(复杂)的关系 ,30分钟视频,30分钟编码,基本学会静态代理设计模式 https://www.bilibili.com/video/BV15E411p7vk?p=6 (另外打个广告,百知哥视频在b站免费,资料要收费,一个专题2.**元,很亲民的价格,如果绝得视频有用,买卖无妨,20200628 买了第一个) ...

狗剩的专栏 365

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

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

徐泗空的博客 1460

【Java】设计模式——单例、工厂、代理模式

本文介绍了Java中三种常见设计模式:单例模式确保类只有一个实例,分为饿汉式(启动即初始化)和懒汉式(首次访问初始化);工厂模式通过工厂类创建对象,实现创建与使用分离,支持灵活扩展;代理模式通过代理类控制对实际对象的访问,实现权限检查等功能。这些模式各有适用场景,合理运用能提升代码的可维护性和扩展性。文章通过具体代码示例展示了每种模式的实现方式,帮助开发者理解设计模式的核心思想与应用方法。

user340的博客 2518

Java 设计模式-代理模式

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

精神小牛马 3726

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

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

蛋蛋淡淡定的庄园 299

23种设计模式之代理模式(Proxy Pattern)

本篇文章将23种设计模式中的代理模式,此篇文章为一天学习一个设计模式系列文章,后面会分享其他模式知识。

小威的博客 2万+
上一篇: java设计模式--代理模式(二)
下一篇: http、tcp/ip流程
王小禾
博客等级 码龄11年 80粉丝 291原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值