GoF代理模式

news2025/1/13 2:48:01

在java中代理模式的作用:

  1.一个对象需要受到保护的时候,可以考虑使用代理对象取完成某个行为.

  2.需要给某个对象的功能进行功能增强的时候,可以考虑找一个代理进行增强

  3.A对象无法和B对象无法直接沟通,也可以使用代理模式解决

代理模式有三大角色:

  第一个角色:目标对象(演员)

  第二个角色:代理对象(替身演员)

  第三个角色:目标对象和代理对象的公共接口(演员和替身演员应该具有相同的行为动作)

如果使用代理模式的话,对于客户端程序来说,客户端是无法察觉到的,客户端在使用代理对象的时候就像在使用目标对象

 如果要维护之前的代码,可以采用代理模式,将之前写好的类作为属性写到新生成的类,用接口来接,这样耦合度低

就像运行在目标对象一样

 

 目前使用的是静态代理,每个接口都需要代理类,不好维护,可以使用动态代理

proxy意为代理 

使用JDK动态代理技术:调用Proxy.newProxyInstance(类加载器,代理类要实现的接口,调用处理器)

 第三个参数传一个类,编写的是增强代码,需要实现InvocationHandler

 

当代理对象调用代理方法的时候,注册在InvocationHandler调用处理器当中的invoke()方法被调用

 此时完成的增强,还没有调用目标对象的目标方法

 

调用method.invoke(目标对象,参数),目标参数通过构造方法传入

 如果有返回值的话,记得继续往上返回

 

CGLiB简介:

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/436051.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WPF mvvm框架Stylet使用教程-窗体交互用法

窗体操作 打开窗体 在stylet框架中,要打开一个窗口或者对话框,只需要直接使用窗口管理器 在要使用的ViewModel中注入IWindowManager,然后使用他的方法操作窗口。 ShowDialog(object viewModel)模态显示ShowWindow(object viewModel) 非模…

修改OPNET帮助文档的默认打开浏览器 给Edge浏览器配置IE Tab插件

我在使用 OPENT Modeler 软件时经常会用到帮助文档,但是其默认打开的是 IE 浏览器,想要其在 Edge 浏览器中打开,但是会出现网页无法打开的情况,这时需要给 Edge 浏览器安装一个 IE Tab 插件。 IE Tab 插件是专门针对浏览器而开发的…

vue3的介绍和两种创建方式(cli和vite)

目录 一、vue3的介绍 (一)vue3的简介 (二)vue3对比vue2带来的性能提升 二、vue3的两种创建方式 方式一:使用vue-cli创建(推荐--全面) 操作步骤 方式二:使用vite创建 操作步…

Spring是什么?关于Spring家族

初识Spring 什么是Spring? Spring是一个开源的Java企业级应用程序开发框架,由Rod Johnson于2003年创建,并在接下来的几年里得到了广泛的发展和应用。它提供了一系列面向对象的编程和配置模型,支持开发各种类型的应用程序&#x…

黑客网站攻击的主要手段

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 黑客与白帽子 有的童鞋觉得黑客和白帽子是同一回事儿,其实不然;而且,他们的工作方式与目标也有很大的差异。 黑客是指一群专门使用计算机…

9.2 变量的指针和指向变量的指针变量

9.2 变量的指针和指向变量的指针变量 一.指针变量的定义二.指针变量的引用三.整理至https://appd872nnyh9503.pc.xiaoe-tech.com/index的笔记 一.指针变量的定义 变量的指针 就是变量的地址。 我们可以定义一个指向 变量 的指针变量。 这种指针变量,我们在定义的时…

信创办公–基于WPS的EXCEL最佳实践系列 (筛选重要数据)

信创办公–基于WPS的EXCEL最佳实践系列 (筛选重要数据) 目录 应用背景操作步骤1、筛选2、高级筛选 应用背景 在WPS里,筛选有两种,一种是筛选,另外一种则是高级筛选。 操作步骤 1、筛选 可以根据学号、准考证号、考…

MyBatisPlus基础入门学习

系列文章目录 MyBatisPlus基础入门学习 文章目录 系列文章目录前言一、MyBatisPlus简介1.入门案例2.MyBatisPlus概述 二、标准数据层开发1.标准数据层CRUD功能2.分页功能 三、DQL控制1.条件查询方式2.查询投影3.查询条件设定4.字段映射与表名映射 四、DML控制1.Insert2.Delete…

原创文章生成器在线版-ai写作生成器

随着人工智能技术的迅猛发展,越来越多的人开始意识到,利用AI可以实现许多以前不可能想象的事情。其中,一种最能体现人工智能技术优势的应用就是“ai原创文章生成器”。它可以为营销从业者提供一种全新的营销推广方式。 那么,什么是…

AIGC技术赋能下 CRM将迎来怎样的变革?

今年以来,随着ChatGPT的爆火,人工智能(AI)迎来新一轮的热潮,开始更多地走入人们的视野。如果说2016年“阿尔法狗”(Alpha Go)大战围棋世界冠军还只是人工智能的“昙花一现”,那么Cha…

在 FPGA 上如何实现双线性插值的计算?

作者 | 殷庆瑜 责编 | 胡巍巍 目录 一、概述 二、What?什么是双线性插值? 二、Why?为什么需要双线性插值? 三、How?怎么实现双线性插值? 关键点1 像素点选择 关键点2 权重计算 升级1 通过查表减少…

深入分析Linux网络丢包

1、背景: 从图中你可以看出,可能发生丢包的位置,实际上贯穿了整个网络协议栈。换句话说,全程都有丢包的可能。 在两台 VM 连接之间,可能会发生传输失败的错误,比如网络拥塞、线路错误等;在网卡…

大数据实战 --- 淘宝用户行为

目录 开发环境 数据描述 功能需求 数据准备 数据清洗 用户行为分析 找出有价值的用户 开发环境 HadoopHiveSparkHBase 启动Hadoop:start-all.sh 启动zookeeper:zkServer.sh start 启动Hive: nohup hiveserver2 1>/dev/null 2>…

计算机体系结构基本概念,指令系统

Amdahl定律 这个定律告诉我们去优化系统中最重要(占比最大)的部分,作业有个问题,是系统中有多个部件可以改进,可改进部分比例的分母是整个任务,并不是独属于部件 i i i的任务,因此扩展的Amdahl定…

kubespray 部署 kubernetes 排错细节仅供参考

文章目录 1. TASK [kubernetes/preinstall : Hosts | create list from inventory]2: TASK [container-engine/containerd : containerd Create registry directories]3. TASK [kubernetes/control-plane : kubeadm | Initialize first master]4. reslov.conf 权限无法修改5. i…

LeetCode算法小抄 -- 环检测算法 和 拓扑排序算法

LeetCode算法小抄 -- 环检测算法 和 拓扑排序算法 环检测算法(DFS)[207. 课程表](https://leetcode.cn/problems/course-schedule/) 拓扑排序算法(DFS)[210. 课程表 II](https://leetcode.cn/problems/course-schedule-ii/) 环检测算法(BFS)拓扑排序算法(BFS) ⚠申明&#xff1…

第四章-图像加密与解密

加密与加密原理 使用异或运算实现图像加密及解密功能。 异或运算规则(相同为0,不同为1) 运算数相同,结果为0;运算数不同,结果为1任何数(0/1)与0异或,结果仍为自身任何数(0/1)与1异或,结果为另外一个数,即0变1, 1变0任何数和自身异或,结果为0 同理到图像加密解密 加密过程:…

Stable Diffusion成为生产力工具(六):制作一张庆祝五一劳动节的海报

S:AI能取代设计师么? I :至少在设计行业,目前AI扮演的主要角色还是超级工具,要顶替?除非甲方对设计效果无所畏惧~~ 预先学习: 安装webui《Windows安装Stable Diffusion WebUI及问题解决记录》。…

JS逆向 - 破解oklink加密参数及加密数据

版权声明:原创不易,本文禁止抄袭、转载,侵权必究! 目录 一、JS逆向目标-会当临绝顶二、JS逆向分析-不识庐山真面目三、JS逆向测试-只缘身在此山中四、JS反逆向-柳暗花明又一村五、oklink逆向完整代码下载六、作者Info 一、JS逆向目…

Redis --- 常用命令、Java中操作Redis

一、Redis常用命令 1.1、字符串string操作命令 Redis 中字符串类型常用命令: SET key value 设置指定key的值 GET key 获取指定key的值 SETEX key seconds value 设置指定key的值,并将 key 的过期时间设为 seconds 秒 SETNX key value 只有在 key 不…