【多线程】静态代理
当使用静态代理模式时,我们会有一个真实的对象(RealSubject),一个代理对象(ProxySubject),代理对象将请求转发给真实对象,并可以在请求前后执行额外的操作。
真实对象和代理对象要实现同一个接口
代理对象要代理真实角色
比如 找中介买房
真实对象:买家
代理对象:中介
package org.example;public class StaticProxy {public static void main(String[] args) {He he=new He(new You());he.HappyBuy();}
}interface Buy{void HappyBuy();
}class You implements Buy{@Overridepublic void HappyBuy() {System.out.println("xxx要买房了");}
}
//代理对象,帮助你买房
class He implements Buy{private Buy target;public He(Buy target){this.target=target;}@Overridepublic void HappyBuy() {before();this.target.HappyBuy();after();}public void before(){System.out.println("带客户看房,签订买卖合同,支付房款");}public void after(){System.out.println("搬进新房");}
}

总结:
首先创建了一个接口(buy ),并且定义了一个方法(HappyBuy )
真实对象(You )调用 HappyBuy方法
class You implements Buy{@Overridepublic void HappyBuy() {System.out.println("xxx要买房了");}
}
代理对象(He )调用 HappyBuy方法
class He implements Buy{private Buy target;public He(Buy target){this.target=target;}@Overridepublic void HappyBuy() {before();this.target.HappyBuy();after();}public void before(){System.out.println("带客户看房,签订买卖合同,支付房款");}public void after(){System.out.println("搬进新房");}
}
创建主函数实现
将真实对象丢进代理对象,让代理对象去执行
He he=new He(new You());
public class StaticProxy {public static void main(String[] args) {He he=new He(new You());he.HappyBuy();}
}
相关文章:
【多线程】静态代理
当使用静态代理模式时,我们会有一个真实的对象(RealSubject),一个代理对象(ProxySubject),代理对象将请求转发给真实对象,并可以在请求前后执行额外的操作。 真实对象和代理对象要实…...
线性代数 第二章 矩阵
一、概念 个数排成的m行n列的表格 二、运算法则 三、初等变换 (1)用非零常数k乘矩阵的某一行(列); (2)互换矩阵某两行(列)的位置; (3&#…...
vue实现自定义字体
1、字体资源查找 网址 https://eng.m.fontke.com/ 选择想要的字体之后下载 获取文件夹内的.ttf文件 2 、字体引入 在项目根目录下新建font文件夹,将ttf文件放在里面 3、相应的页面vue文件中引入 在style标签中加上 font-face { font-family: ‘ZCOOLXiaoWei’…...
Selenium安装WebDriver Chrome驱动(含 116/117/118/119/120/)
1、确认浏览器的版本 在浏览器的地址栏,输入chrome://version/,回车后即可查看到对应版本 2、找到对应的chromedriver版本 2.1 114及之前的版本可以通过点击下载chromedriver,根据版本号(只看大版本)下载对应文件 2.2 116版本…...
springboot的安全机制
一.jwt Spring Boot是一个用于开发Java应用程序的开源框架,它提供了一种快速、简单和可扩展的方式来构建独立的、生产级别的应用程序。在最新的版本Spring Boot 2.5中,引入了对JWT(JSON Web Token)的支持。本文将介绍如何在Spring Boot 2.5中使用JWT,并提供一个简单的示例…...
学习c++的第四天
目录 运算符 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 杂项运算符 运算符优先级 运算符 算术运算符 算术运算符是 C 中用于执行基本算术操作的运算符。 加法运算符 ():将两个操作数相加。例如,A B 将得到 30,因为 …...
BIOS开发笔记 – 显示
UEFI启动流程跑完前三阶段,UEFI环境的准备基本完成,到BDS阶段的任务就是准备引导OS。在此之前还需要使一些必要的硬件工作起来,比如键盘设备,屏幕等,怎么让屏幕工作呢?简单的说就是执行其相关的UEFI驱动。要注意一下的是,这里所说的驱动并不是屏幕的驱动,而是GPU的驱动…...
数据库实验:SQL的数据视图
目录 视图概述视图的概念视图的作用 实验目的实验内容实验要求实验过程 视图概述 视图是由数据库中的一个表或多个表导出的虚拟表,其作用是方便用户对数据的操作 视图的概念 视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一…...
k8s-调度约束
目录 工作机制 调度过程 指定调度节点 亲和性 键值运算关系 Pod亲和性与反亲和性 污点(Taint) 和 容忍(Tolerations) 维护操作 故障排除步骤 Kubernetes 是通过 List-Watch 的机制进行每个组件的协作,保持数据同步的,每个组件之间的设计实现了…...
C++设计模式_26_设计模式总结
本篇为C++设计模式的总结课,此篇再回到原帮助大家梳理一下。 文章目录 1. 一个目标2. 两种手段3. 八大原则4. 重构技法5. 从封装变化角度对模式分类6. C++对象模型7. 关注变化点和稳定点8. 什么时候不用模式9. 经验之谈10. 设计模式成长之路1. 一个目标 管理变化,提高复用!…...
解锁AI语言模型的秘密武器 - 提示工程
文章目录 一、LLM概念1.1 什么是LLMs1.2 LLMs类别1.3 如何构建LLM 二、提示工程简介2.1 基础提示2.2 使用提示词的必要性 三、 提示3.1 如何写好提示词3.1.1 使用分隔符3.1.2 结构化输出3.1.3 风格信息3.1.4 给定条件3.1.5 给出示例3.1.6 步骤分解3.1.7 不断迭代 3.2 提示工程3…...
qt手撕菜单栏
最近有个项目需要手写菜单栏。 就写了一个简单的程序,供大家参考! #include <QApplication> #include <QMainWindow> #include <QMenuBar> #include <QMenu> #include...
UE5——网络——RPC
RPC(这个是官方文档的资料) 要将一个函数声明为 RPC,您只需将 Server、Client 或 NetMulticast 关键字添加到 UFUNCTION 声明。 例如,若要将某个函数声明为一个要在服务器上调用、但需要在客户端上执行的 RPC,您可以…...
基于ASP.NET MVC + Bootstrap的仓库管理系统
基于ASP.NET MVC Bootstrap的仓库管理系统。源码亲测可用,含有简单的说明文档。 适合单仓库,基本的仓库入库管理,出库管理,盘点,报损,移库,库位等管理,有着可视化图表。 系统采用Bo…...
Jetson NX FFmpeg硬件编解码实现
最近在用Jetson Xavier NX板子做视频处理,但是CPU进行视频编解码,效率比较地下。 于是便考虑用硬解码来对视频进行处理。 通过jtop查看,发现板子是支持 NVENC硬件编解码的。 1、下载源码 因为需要对ffmpeg进行打补丁修改,因此需…...
5.2用队列实现栈(LC225-E)
算法: 其实这道题不用像上一道题一样,用两个队列实现栈。 由于队列的数据结构特性。用一个队列就可实现栈。 难点还是在出队的时候: 比如队列[1,2,3],要模拟一个栈入栈就是直接append(其实就是C中的push࿰…...
项目上线前发现严重Bug怎么办?
今天分享一个面试问题,现在有一个面试场景: 项目计划明天发布,但是在今天你作为测试人员发现了一个严重的bug,市场相关人员又在催发布的事情,这个时候你应该怎么办? 这是测试工程师不管是在面试࿰…...
【WPF系列】- Application详解
【WPF系列】- Application详解 文章目录 【WPF系列】- Application详解一、Application简介Application 类具体有以下功能: 二、初始App.xaml二、自定义Main方法启动WPF应用程序第一种:启动应用程序的代码第二种:启动应用程序的代码第三种:启…...
常见的内置方法:__call__,__getitem__,__iter__,__next__
1.__call__方法 在创建好一个实例后,直接调用一个实例会报错。但使用__call__后,可以让这个实例可以像方法一样被调用(就是一个函数后面加个括号的函数调用形式) class Person:passp1 Person() p1() # 实例这样无法直接被调…...
python用cv2画图(line, rectangle, text等)
Python做图像图形研究的时候,通常需要画很多辅助几何形状(比如bounding box等)。基于opencv的几何图形绘制具有易用性,而且天然能和numpy数组交互。 本文总结了几种常用的cv2画几何图形的方法,当一个简易的手册使用&a…...
【亲测免费】 ImageNet标签文件及读取脚本:加速您的计算机视觉研究
ImageNet标签文件及读取脚本:加速您的计算机视觉研究 【下载地址】ImageNet标签文件及读取脚本 ImageNet 标签文件及读取脚本 项目地址: https://gitcode.com/open-source-toolkit/56c9e 项目介绍 在计算机视觉领域,ImageNet数据集是图像分类任务…...
BesTV_R3300-L S905L芯片刷机实战:从驱动识别到固件烧录的完整避坑指南
1. 认识你的BesTV_R3300-L盒子 我手头这台BesTV_R3300-L盒子已经吃灰大半年了,原厂系统用起来卡顿不说,还经常弹出各种广告。拆开外壳看到S905L芯片的那一刻,我就知道这玩意儿有救——毕竟这是刷机圈里的"老熟人"了。先给新手朋友科…...
LabVIEW 2021生成EXE后报表报错?手把手教你添加NIReport.llb和LVClass文件
LabVIEW报表生成避坑指南:从源码到EXE的完整解决方案 在LabVIEW开发过程中,报表生成功能是许多工程师不可或缺的工具。然而,当我们将精心编写的程序打包成可执行文件(EXE)时,常常会遇到一个令人头疼的问题&…...
传统 OA 系统为什么难以满足现代企业管理需求
传统 OA 系统为什么难以满足现代企业管理需求 OA 曾经是很多企业数字化的起点:通知公告、请假报销、文件流转、会议管理、用印审批,让办公室从纸质时代进入线上时代。但今天,企业对 OA 的期待已经变了。 现代企业不只需要“把审批搬到线上…...
RVC-WebUI语音克隆工具:从零开始的完整实战指南
RVC-WebUI语音克隆工具:从零开始的完整实战指南 【免费下载链接】rvc-webui liujing04/Retrieval-based-Voice-Conversion-WebUI reconstruction project 项目地址: https://gitcode.com/gh_mirrors/rv/rvc-webui RVC-WebUI是一款基于检索式语音转换技术的开…...
CLI工具集claw:模块化设计与插件化架构深度解析
1. 项目概述:一个面向开发者的现代化CLI工具集最近在GitHub上看到一个名为opsyhq/claw的项目,第一眼就被它简洁的名字吸引了。claw,中文意思是“爪子”,听起来就很有力量感和抓取感。点进去一看,果然,这是一…...
猫抓浏览器扩展完全指南:5步掌握网页视频资源嗅探与下载
猫抓浏览器扩展完全指南:5步掌握网页视频资源嗅探与下载 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾经遇到过想保存网页上…...
张琦(新商业架构师)成功的核心步骤 + 关键心法
张琦(新商业架构师)成功的核心步骤 关键心法,和李一舟完全不同,她走的是认知升维+天地人网全域流量+击穿单点+长期复利路线,全是可落地、能直接照做的干货。 一、张琦成功的底层逻辑…...
【教育研究者的AI外脑】:NotebookLM如何72小时内重构文献综述工作流?
更多请点击: https://codechina.net 第一章:【教育研究者的AI外脑】:NotebookLM如何72小时内重构文献综述工作流? 教育研究者长期面临文献爆炸与认知过载的双重压力:平均每位博士生需精读300篇中英文文献,…...
当EtherCAT遇上串口调试:在STM32F401RET6上如何兼顾实时通信与日志输出
当EtherCAT遇上串口调试:在STM32F401RET6上如何兼顾实时通信与日志输出 工业自动化领域对实时性要求极高,EtherCAT作为高性能工业以太网协议,其从站开发往往需要在资源受限的微控制器上实现。STM32F401RET6凭借其Cortex-M4内核和丰富的外设资…...
