代理模式--设计模式
为什么要学习代理模式?
因为这是SpringAOP的底层!
1、定义:
在不改变源码的情况下,实现对目标对象的功能扩展
根据代理类的生成时间不同可以将代理分为静态代理和动态代理两种
静态代理
角色分析
- 抽象角色:一般会使用接口或者抽象类来解决
- 真实角色:被代理的角色
- 代理角色:代理真实角色, 代理真实角色后,我们一般会做一些附属操作
- 客户:访问代理对象的人
代码步骤:
1、接口
//租房
public interface Rent {void rent();
}
2、真实角色
public class Host implements Rent{@Overridepublic void rent() {System.out.println("房东出租房子");}
}
3、代理角色
public class Proxy implements Rent {private Host host;public Proxy() {}public Proxy(Host host) {this.host = host;}@Overridepublic void rent() {host.rent();seeHouse();sendHouse();}//看房public void seeHouse() {System.out.println("中介带看房");}//租房public void sendHouse() {System.out.println("我租房子");}
}
4、客户端访问代理角色
public class Client {public static void main(String[] args) {Host host = new Host();//代理Proxy proxy = new Proxy(host);proxy.rent();}
}
输出结果:
房东出租房子
中介带看房
我租房子
代理模式的好处
可以使真实角色的操作更加纯粹!不用去关注一些公共的业务
公共业务交给代理角色!实现了业务的分工
公共业务发生扩展的时候,方便集中管理
动态代理
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
代理模式--设计模式
为什么要学习代理模式? 因为这是SpringAOP的底层! 1、定义: 在不改变源码的情况下,实现对目标对象的功能扩展 根据代理类的生成时间不同可以将代理分为静态代理和动态代理两种 静态代理 角色分析 抽象角色:一般会…...
![](https://img-blog.csdnimg.cn/d39bb7f511f9487bb093fdd6c7a67609.png)
【RSTP的原理和配置】
一、RSTP 概述 RSTP使用了IEEE 802.1W协议,视为STP的改进版本,收敛速度快,兼容STP。 RSTP可以兼容STP,但是会丧失快速收敛等优势; 1、RSTP对STP的改进; 1.1、端口角色的增补、简化了生成树协议的理解及部…...
![](https://img-blog.csdnimg.cn/c0622414508e46e689c5890843efacaf.png)
Doom流量回放工具导致的测试环境服务接口无响应的排查过程
Doom流量回放工具导致的测试环境服务接口无响应的排查过程 现象描述: a)部分接口(A组接口)无响应 b)部分接口(B组接口)正常响应 c)还有一部分接口(C组接口),场景1无响应,场景2正常响…...
![](https://img-blog.csdnimg.cn/img_convert/ee560ca58a7769a780d4ea46d1ce931d.jpeg)
2023年留学基金委(CSC)西部/地方合作项目选派办法及解读
2023年2月13日国家留学基金委(CSC)官方网站发布了2023年西部地区人才培养特别项目、地方合作项目通知。知识人网小编现将其选派工作流程及选派办法原文转载并加以解读、提出建议。知识人网建议1. 邀请函是公派申请的必备条件。对于外语语言证明未达标者&…...
![](https://img-blog.csdnimg.cn/img_convert/8205f3c4a4d31b4d446fc13b85afd7f6.webp?x-oss-process=image/format,png)
ILSSI国际研讨会将为您呈现六西格玛技术的未来与前景
ILSSI 欢迎世界各地的精益六西格玛专业人士参加即将举行的2023年国际精益六西格玛研讨会,这次研讨会将邀请到世界各地的专家学者,分享他们的专业知识和经验,并就精益六西格玛等相关议题进行探讨和交流。 这是一个绝佳的机会,让您…...
![](https://img-blog.csdnimg.cn/bf304a42ed15408ab0539204d73979ac.png)
KDJ日周月金叉共振指标
昨天介绍了MACD多周期共振指标公式,KDJ通过类似的写法,也可以共振。本文介绍的KDJ日周月金叉共振指标包含日周金叉共振、日月金叉共振、周月金叉共振、日周月金叉共振四种类型。 需要注意的问题依然是周、月金叉的信号漂移,接近周末月末的信…...
![](https://img-blog.csdnimg.cn/img_convert/c8f52c9288488df73270ffa14e183443.png)
线程私有变量ThreadLocal详解
本文已收录至Github,推荐阅读 👉 Java随想录 烈火试真金,逆境试强者。——塞内加 文章目录什么是ThreadLocalThreadLocal 原理set()方法get()方法remove()方法ThreadLocal 的Hash算法ThreadLocal 1.7和1.8的区别ThreadLocal 的问题ThreadLoca…...
![](https://www.ngui.cc/images/no-images.jpg)
如何保证数据库和缓存双写一致性
前言 数据库和缓存(比如:redis)双写数据一致性问题,是一个跟开发语言无关的公共问题。尤其在高并发的场景下,这个问题变得更加严重。 我很负责的告诉大家,该问题无论在面试,还是工作中遇到的概率非常大,所以非常有必要跟大家一起探讨一下。 今天这篇文章我会从浅入深,…...
![](https://img-blog.csdnimg.cn/img_convert/9edcdbcb553bc205fd92a128ab5d7251.webp?x-oss-process=image/format,png)
一文搞懂:JS严格模式“use strict”
什么是JS的严格模式 JS严格模式概念是在ES5中引入的,在此模式下,JS对语法的要求会变的严格,某些不太严谨的代码在严格模式下将不能运行。 如何启用严格模式 只需要JS代码的起始添加 "use strict"即可。如: "use…...
![](https://img-blog.csdnimg.cn/34f1d7f53ed2478b853dd2e257fbfe64.png)
Linux的ACL(扩展权限)规划:setfacl、getfacl
目录 什么是ACL与如何支持启动ACL ACL设置技巧:getfacl、setfacl getfacl命令用法 setfacl命令用法 最简单的【u:账号:权限】设置 使用默认权限设置目录未来文件的ACL权限继承 什么是ACL与如何支持启动ACL ACL是Access Control List的…...
![](https://img-blog.csdnimg.cn/af4f3660a9f84f2c86f5d68dae8731af.png)
HTML预格式化文本pre标签
文章目录参考white-spaceword-breakfont-family参考 https://blog.csdn.net/weixin_44368963/article/details/120054949 https://www.zhangxinxu.com/wordpress/2017/03/css-font-family-chinese-english/ pre 元素可定义预格式化的文本。被包围在 pre 元素中的文本通常会保留…...
![](https://www.ngui.cc/images/no-images.jpg)
基于机器学习的心脏病预测方法(11)——梯度提升机(GBM)
一、梯度提升机介绍 GBM(Gradient Boosting Machine)算法是Boosting(提升)算法的一种。主要思想是,串行地生成多个弱学习器,每个弱学习器的目标是拟合先前累加模型的损失函数的负梯度, 使加上该弱学习器后的累积模型损失往负梯度的方向减少。 且它用不同的权重将基学习器…...
![](https://img-blog.csdnimg.cn/img_convert/2531a6397d7388dd609287b73fd07b1c.png)
Linux多版本python切换以及多版本pip对应 (cloud studio Ubuntu16.04)
linux && cloud studio && Ubuntu16.04 简单解决多版本python切换以及多版本pip对应问题 1.python2切换成python 多版本python: 更改前先查看版本号 $ python -V Python 2.7.12 $ python2 -V Python 2.7.12 $ python3 -V Python 3.5.2 通过下面的命令看到py…...
![](https://img-blog.csdnimg.cn/514d67d3a3e94a7a955ba8943823039c.jpeg)
【并发编程】LockSupport源码详解
目录 一、前言 1.1 简介 1.2 为什么说LockSupport是Java并发的基石? 二、LockSupport的用途 2.1 LockSupport的主要方法 2.2 使用案例 2.3 总结 三、LockSupport 源码分析 3.1 学习原理前的前置知识 3.1.1 Unsafe.park()和Unsafe.unpark() 3.1.2wait和notify/notify…...
![](https://img-blog.csdnimg.cn/img_convert/7618d6c7d04ac8f3de1530beab710fcc.png)
元宇宙之声:新鸿基公司
在本期节目中,新鸿基团队讲述了他们在农历新年季中展示的元宇宙最新创作! 为什么将体验命名为「乘风启航」?什么是 「Scallywag」? 香港专业离岸帆船队新鸿基 Scallywag 队由新鸿基公司赞助,其团队精神与公司的精神相呼…...
![](https://img-blog.csdnimg.cn/3cad0e276c68455ea4fa87d39833e030.png#pic_center)
Linux中定时监控Tomcat服务器进程并在进程结束时重启Tomcat服务器
目录一、问题二、解决方法1、创建定时任务文件2、修改Tomcat的部分文件3、添加系统的定时调度4、执行monitor.sh文件5、查看脚本执行的日志文件一、问题 当我们的Tomcat配置完成后投入使用后,在用户使用一定时间后,Tomcat可能会出现一些问题导致进程结束…...
![](https://img-blog.csdnimg.cn/img_convert/50db2a72126a5c781039ef8f4640d3a9.png)
快速部署私有云笔记,免费享受多端同步
一、老Q笔记之一路坎坷 市面上的笔记软件非常多,有些是本地编辑功能特别强大但是不支持云同步,有些是支持上云但是编辑功能不够完善。选择一款合适的云笔记软件,无疑能让我们工、学习的时候更加顺心、顺手。 这么多年来老Q使用过很多云笔记…...
![](https://www.ngui.cc/images/no-images.jpg)
python生成 2048位随机质数 Miller-Rabin质数测试算法
Miller-Rabin质数测试算法是一种基于随机化的算法,用于判断一个数是否为质数。该算法具有高效性和强健性,通常被用于加密算法中生成大素数。 该算法基于以下两个事实:对于质数ppp和任意整数aaa,有ap−1≡1(modp)a^{p-1} \equiv 1…...
![](https://www.ngui.cc/images/no-images.jpg)
♡ — MySQL 查询缓存
MySQL 查询缓存 执行查询语句的时候,会先查询缓存。MySQL 8.0 版本后移除,因为这个功能不太实用。 my.cnf 加入以下配置,重启 MySQL 开启查询缓存: query_cache_type1 query_cache_size600000MySQL 执行以下命令也可以开启查询缓…...
![](https://img-blog.csdnimg.cn/4aac1e8562a8424eb60fd78af9ad59c2.png)
死锁检测组件 -- 使用hook检测死锁
目录 hook hook是什么 dlsym()函数 hook的实现步骤 加入hook的demo C/CLinux服务器开发/后台架构师【零声教育】-学习视频教程-腾讯课堂 hook hook可以把系统或第三方库提供的函数,替换成我们写的同名函数。会调用我们实现的函数。 hook是什么 hook提供了两…...
![](https://img-blog.csdnimg.cn/bff814f1c56c4fa9834bd01b1c7ff91b.png)
第2集丨Java中的数据类型汇总
目录一、数据类型分类二、基本数据类型取值范围数据类型的转换byte和char的关系三、包装类一、数据类型分类 二、基本数据类型 取值范围 比特(bit位) : 数据运算得最小存储单位字节(byte) : 数据最小存储单位bit和byte可以互相转换得,1 byte 8 bit位默认情况下&am…...
![](https://img-blog.csdnimg.cn/d6554f92db64457ab7d3d98af1463c49.png)
【基础篇】7 # 队列:队列在线程池等有限资源池中的应用
说明 【数据结构与算法之美】专栏学习笔记 什么是队列? 队列是一种操作受限的线性表数据结构,特点是先进先出,最基本的操作有:入队 enqueue(),放一个数据到队列尾部;出队 dequeue(),从队列头…...
![](https://img-blog.csdnimg.cn/c1d2de10ec7343f78235ae22a2ceee3b.png)
matlab进行双目标定获取双目参数并打印教程
文章目录前言1.打开matlab进行双目标定2.获取想要的参数前言 在相同的标定算法和标定参数下,Python和Matlab的标定精度是相同的。因为标定精度主要取决于标定算法和标定参数的质量,而不是编程语言的选择。 不同的编程语言可能使用不同的库或实现细节&…...
![](https://img-blog.csdnimg.cn/75573049aa7f4ee29b7640785b25b9b3.png)
JVM类加载机制
回到2018年的抖音哈哈. 回顾下: java开发环境: java编译运行过程: 1) 编译期:.java源文件,经过编译,生成.class字节码文件 2) 运行期:JVM加载.class并运行.class(0和1) 特点: 跨平台、一次编程,处处报错 名词解释: 1…...
![](https://www.ngui.cc/images/no-images.jpg)
8.1 优化概述
数据库性能取决于数据库级别的几个因素,例如表、查询和配置设置。这些软件结构导致了硬件级别的 CPU 和 I/O 操作,您必须将其最小化并尽可能提高效率。在研究数据库性能时,首先要学习软件端的高级规则和准则,然后使用墙上的时钟时…...
![](https://img-blog.csdnimg.cn/img_convert/1f8db2ec9c9deb91f9e97c558664aa7b.png)
从0到1一步一步玩转openEuler--14 openEuler DNF(YUM)配置管理
文章目录14.1 DNF配置文件14.1.1 配置main部分14.1.2 配置repository部分14.1.3 显示当前配置14.2 创建本地软件源仓库14.3 添加、启用和禁用软件源14.3.1 添加软件源14.3.2 禁用软件源14.3.3 启用软件源DNF是一款Linux软件包管理工具,用于管理RPM软件包。DNF可以查…...
![](https://www.ngui.cc/images/no-images.jpg)
leetcode707 设计链表 带有输入和输出的
题目: 设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节…...
![](https://img-blog.csdnimg.cn/6d36df8e48994ab6a7a8a021d8d92662.png)
100种思维模型之非sr思维模型-012
什么是sr? sr是stimulus-response的缩写,意思是刺激反应。 那么非sr思维模型就是非刺激反应思维模型的意思。 今天我们来聊聊非sr思维模型——一个提醒我们思考,提醒我们任何时刻都有选择权的思维模型。 本文依然从三个方面进行介绍,何谓…...
![](https://www.ngui.cc/images/no-images.jpg)
绿竹生物再冲刺港交所上市:暂未商业化,孔健夫妇为实控人
近日,北京绿竹生物技术股份有限公司(下称“绿竹生物”)在港交所递交招股书,准备在港交所主板上市,中金公司为其独家保荐人。据贝多财经了解,绿竹生物曾于2022年6月28日在港交所递表。 相较于此前招股书&am…...
![](https://www.ngui.cc/images/no-images.jpg)
加拿大MSB金融牌照申请方案
什么是加拿大MSB金融牌照? 根据犯罪所得(洗钱)和恐怖主义融资法案,您的企业必须在加拿大金融交易和报告分析中心 (FINTRAC) 注册成为货币服务企业。自 2020 年 6 月 1 日起,外国货币服务企业也必须在 FINTRAC 注册&…...
![](https://img-blog.csdnimg.cn/img_convert/5268f80b9b1e01f982625ef6fac83ca1.png)
做装修的网站怎么做好/杭州百度推广电话
这次给大家带来vue项目中如何使用ueditor,vue项目中使用ueditor的注意事项有哪些,下面就是实战案例,一起来看一下。以vue-cli生成的项目为例1.static文件夹下先放入ueditor文件2.index.html添加如下代码3.webpack.base.conf.js添加如下配置ex…...
![](/images/no-images.jpg)
刚做的网站适合做外链吗/苏州seo
是40, 在建立数据表的时候要注意一下, 用char类型就可以了转载于:https://www.cnblogs.com/souroot/archive/2012/10/20/2732456.html...
wordpress自定义查询/百度seo关键词优化软件
开发环境 windows7 64、intellij idea 14.1.5、spark-1.5.2、scala 2.0.4、java1.7、maven3.05 将spark中的assembly包引入即可使用local模式运行相关的scala任务,注意不要使用scala2.11,非要使用的话先用这个版本的scala编译一遍spark哈 代码部分 pom文件 先附…...
![](https://img-blog.csdnimg.cn/20190221092525653.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2l0eXFpbmc=,size_16,color_FFFFFF,t_70)
o2o网站建设如何/长沙百度网站排名优化
String String的创建机理 由于String在Java世界中使用过于频, Java为了避免在一个系统中产生大量的String对象, 引入了字符串常量池。 其运行机制是:创建一个字符串时,首先检查池中是否有值相同的字符串对象,如果有则不需要创建直接从池中刚查找到的对象引用;如果没有则新建…...
![](/images/no-images.jpg)
无锡本地网站有哪些/惠州seo外包平台
我在垂直链中有两个视图(viewA,viewB). viewA的宽高比应始终为1:1,而viewB的高度是动态的(可能为400dp,可能为700dp)预期成绩:当viewB的高度太大而无法容纳屏幕中的两个视图时,应减小viewA的宽度(保持宽高比).实际结果:如果viewB的高度太大,则…...
![](/images/no-images.jpg)
新公司网站建设流程/电子商务推广方式
依赖包安装 # 安装 myjs-common 包 npm install myjs-common1.0.0格式器表达式 YEAR_FORMAT: 年格式化-yyyyMONTH_FORMAT: 月格式化-yyyy-MMDATE_FORMAT: 日期格式化-yyyy-MM-ddHOUR_FORMAT: 时格式化-yyyy-MM-dd HHMINUTE_FORM…...