当前位置: 首页 > news >正文

代理模式--设计模式

为什么要学习代理模式?
因为这是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();}
}

输出结果:

房东出租房子
中介带看房
我租房子

代理模式的好处

可以使真实角色的操作更加纯粹!不用去关注一些公共的业务
公共业务交给代理角色!实现了业务的分工
公共业务发生扩展的时候,方便集中管理

动态代理

相关文章:

代理模式--设计模式

为什么要学习代理模式? 因为这是SpringAOP的底层! 1、定义: 在不改变源码的情况下,实现对目标对象的功能扩展 根据代理类的生成时间不同可以将代理分为静态代理和动态代理两种 静态代理 角色分析 抽象角色:一般会…...

【RSTP的原理和配置】

一、RSTP 概述 RSTP使用了IEEE 802.1W协议,视为STP的改进版本,收敛速度快,兼容STP。 RSTP可以兼容STP,但是会丧失快速收敛等优势; 1、RSTP对STP的改进; 1.1、端口角色的增补、简化了生成树协议的理解及部…...

Doom流量回放工具导致的测试环境服务接口无响应的排查过程

Doom流量回放工具导致的测试环境服务接口无响应的排查过程 现象描述: a)部分接口(A组接口)无响应 b)部分接口(B组接口)正常响应 c)还有一部分接口(C组接口),场景1无响应,场景2正常响…...

2023年留学基金委(CSC)西部/地方合作项目选派办法及解读

2023年2月13日国家留学基金委(CSC)官方网站发布了2023年西部地区人才培养特别项目、地方合作项目通知。知识人网小编现将其选派工作流程及选派办法原文转载并加以解读、提出建议。知识人网建议1. 邀请函是公派申请的必备条件。对于外语语言证明未达标者&…...

ILSSI国际研讨会将为您呈现六西格玛技术的未来与前景

ILSSI 欢迎世界各地的精益六西格玛专业人士参加即将举行的2023年国际精益六西格玛研讨会,这次研讨会将邀请到世界各地的专家学者,分享他们的专业知识和经验,并就精益六西格玛等相关议题进行探讨和交流。 这是一个绝佳的机会,让您…...

KDJ日周月金叉共振指标

昨天介绍了MACD多周期共振指标公式,KDJ通过类似的写法,也可以共振。本文介绍的KDJ日周月金叉共振指标包含日周金叉共振、日月金叉共振、周月金叉共振、日周月金叉共振四种类型。 需要注意的问题依然是周、月金叉的信号漂移,接近周末月末的信…...

线程私有变量ThreadLocal详解

本文已收录至Github,推荐阅读 👉 Java随想录 烈火试真金,逆境试强者。——塞内加 文章目录什么是ThreadLocalThreadLocal 原理set()方法get()方法remove()方法ThreadLocal 的Hash算法ThreadLocal 1.7和1.8的区别ThreadLocal 的问题ThreadLoca…...

如何保证数据库和缓存双写一致性

前言 数据库和缓存(比如:redis)双写数据一致性问题,是一个跟开发语言无关的公共问题。尤其在高并发的场景下,这个问题变得更加严重。 我很负责的告诉大家,该问题无论在面试,还是工作中遇到的概率非常大,所以非常有必要跟大家一起探讨一下。 今天这篇文章我会从浅入深,…...

一文搞懂:JS严格模式“use strict”

什么是JS的严格模式 JS严格模式概念是在ES5中引入的,在此模式下,JS对语法的要求会变的严格,某些不太严谨的代码在严格模式下将不能运行。 如何启用严格模式 只需要JS代码的起始添加 "use strict"即可。如: "use…...

Linux的ACL(扩展权限)规划:setfacl、getfacl

目录 什么是ACL与如何支持启动ACL ACL设置技巧:getfacl、setfacl getfacl命令用法 setfacl命令用法 最简单的【u:账号:权限】设置 使用默认权限设置目录未来文件的ACL权限继承 什么是ACL与如何支持启动ACL ACL是Access Control List的…...

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 元素中的文本通常会保留…...

基于机器学习的心脏病预测方法(11)——梯度提升机(GBM)

一、梯度提升机介绍 GBM(Gradient Boosting Machine)算法是Boosting(提升)算法的一种。主要思想是,串行地生成多个弱学习器,每个弱学习器的目标是拟合先前累加模型的损失函数的负梯度, 使加上该弱学习器后的累积模型损失往负梯度的方向减少。 且它用不同的权重将基学习器…...

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…...

【并发编程】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…...

元宇宙之声:新鸿基公司

在本期节目中,新鸿基团队讲述了他们在农历新年季中展示的元宇宙最新创作! 为什么将体验命名为「乘风启航」?什么是 「Scallywag」? 香港专业离岸帆船队新鸿基 Scallywag 队由新鸿基公司赞助,其团队精神与公司的精神相呼…...

Linux中定时监控Tomcat服务器进程并在进程结束时重启Tomcat服务器

目录一、问题二、解决方法1、创建定时任务文件2、修改Tomcat的部分文件3、添加系统的定时调度4、执行monitor.sh文件5、查看脚本执行的日志文件一、问题 当我们的Tomcat配置完成后投入使用后,在用户使用一定时间后,Tomcat可能会出现一些问题导致进程结束…...

快速部署私有云笔记,免费享受多端同步

一、老Q笔记之一路坎坷 市面上的笔记软件非常多,有些是本地编辑功能特别强大但是不支持云同步,有些是支持上云但是编辑功能不够完善。选择一款合适的云笔记软件,无疑能让我们工、学习的时候更加顺心、顺手。 这么多年来老Q使用过很多云笔记…...

python生成 2048位随机质数 Miller-Rabin质数测试算法

Miller-Rabin质数测试算法是一种基于随机化的算法,用于判断一个数是否为质数。该算法具有高效性和强健性,通常被用于加密算法中生成大素数。 该算法基于以下两个事实:对于质数ppp和任意整数aaa,有ap−1≡1(modp)a^{p-1} \equiv 1…...

♡ — MySQL 查询缓存

MySQL 查询缓存 执行查询语句的时候,会先查询缓存。MySQL 8.0 版本后移除,因为这个功能不太实用。 my.cnf 加入以下配置,重启 MySQL 开启查询缓存: query_cache_type1 query_cache_size600000MySQL 执行以下命令也可以开启查询缓…...

死锁检测组件 -- 使用hook检测死锁

目录 hook hook是什么 dlsym()函数 hook的实现步骤 加入hook的demo C/CLinux服务器开发/后台架构师【零声教育】-学习视频教程-腾讯课堂 hook hook可以把系统或第三方库提供的函数,替换成我们写的同名函数。会调用我们实现的函数。 hook是什么 hook提供了两…...

2026 AI大会餐饮应急预案(含突发算力中断、多模态点餐接口熔断、生成式菜单幻觉修正SOP)

更多请点击: https://intelliparadigm.com 第一章:2026年AI技术大会餐饮安排 智能餐券系统接入指南 所有参会者将通过大会官方App领取动态二维码电子餐券,该系统基于OAuth 2.0与大会统一身份认证平台深度集成。首次使用需执行以下初始化命令…...

NVIDIA NeMo Curator:大模型数据预处理与质量控制的工业化解决方案

1. 项目概述:从数据洪流到高质量语料库的“炼金术”如果你正在构建或微调一个大语言模型,那么你肯定对“数据”这个词又爱又恨。爱的是,它是模型智能的源泉;恨的是,原始数据就像未经提炼的矿石,充斥着杂质、…...

2025网盘直链下载助手完整指南:八大平台高速下载解决方案

2025网盘直链下载助手完整指南:八大平台高速下载解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天…...

如何用douyin-downloader轻松保存抖音内容:从零开始的完整指南

如何用douyin-downloader轻松保存抖音内容:从零开始的完整指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallba…...

如何快速掌握DLSS Swapper:终极免费工具提升游戏性能体验

如何快速掌握DLSS Swapper:终极免费工具提升游戏性能体验 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper DLSS Swapper是一款专业且免费的DLSS、FSR和XeSS文件管理工具,让你能够轻松升级或降级游…...

AI编程工具配置统一管理:符号链接与构建系统实践

1. 项目概述:一个AI智能体配置的“中央厨房”如果你和我一样,同时在使用Cursor、Claude Code、OpenCode这些新一代的AI编程工具,那你一定体会过那种“配置分裂”的痛苦。每个工具都有自己的规则文件、技能目录和配置文件,它们散落…...

开源情报聚合器:构建自动化OSINT调查系统的核心架构与实践

1. 项目概述:一个被低估的“情报”聚合器最近在GitHub上闲逛,发现了一个挺有意思的项目,叫mapleleaflatte03/meridian-intelligence。乍一看这个名字,可能会联想到一些高大上的数据分析或者商业智能平台。但点进去之后&#xff0c…...

2026届最火的五大降AI率神器实测分析

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 倘若人工智能技术得以广泛普及,那么便会有越来越多的毕业生尝试借助AI工具来辅助…...

物理信息AI与神经拉格朗日大涡模拟:CFD湍流建模新范式

1. 项目概述:当湍流遇见AI,一场计算流体力学的静默革命如果你在计算流体动力学(CFD)领域摸爬滚打过几年,一定会对湍流建模又爱又恨。爱的是,它几乎是所有工业设计——从飞机机翼到汽车外形,从燃…...

从数据到判断——Infoseek舆情分析师的价值锚点

随着自然语言处理和异常检测技术的持续进步,Infoseek这类舆情监测系统的自动化程度越来越高。它可以在几秒钟内完成对全网数百万条信息的初步分析,标记出情绪异常波动的区域,甚至自动生成事件发展的时间线。一个自然的问题随之浮现&#xff1…...