代理模式【Proxy Pattern】

shardingsphere之sharding-proxy读写分离学习笔记 shardingsphere之sharding-proxy读写分离学习笔记引言重要提示演示环境版本信息代码示例和参考读写分离简介主从复制主从复制的原理和流程sharding-proxy简介概念特点使用情况基础环境的搭建docker的安装安装mysql并配置主从复制拉取mysql镜像安装配置master库slave数据库安装配置出现异常参考开放阿里云安全组端口使用客户端连接简单测试开始整合shard... 阅读详情

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

package com.cbf4life.proxy;
/**
* @author cbf4Life cbf4life@126.com
* I'm glad to share my knowledge with you all.
* 定义一种类型的女人,王婆和潘金莲都属于这个类型的女人
*/
public interface KindWomen {

//这种类型的女人能做什么事情呢?
public void makeEyesWithMan(); //抛媚眼


public void happyWithMan(); //happy what? You know that!

} 
一种类型嘛,那肯定是接口,然后定义潘金莲:
package com.cbf4life.proxy;
/**
* @author cbf4Life cbf4life@126.com
* I'm glad to share my knowledge with you all.
* 定一个潘金莲是什么样的人
*/
public class PanJinLian implements KindWomen {
public void happyWithMan() {
 System.out.println("潘金莲在和男人做那个.....");
 } 
public void makeEyesWithMan() {
 System.out.println("潘金莲抛媚眼");
 }
} 
再定一个丑陋的王婆:

package com.cbf4life.proxy;
/**
* @author cbf4Life cbf4life@126.com
* I'm glad to share my knowledge with you all.
* 王婆这个人老聪明了,她太老了,是个男人都看不上,
* 但是她有智慧有经验呀,她作为一类女人的代理!
*/
public class WangPo implements KindWomen {
private KindWomen kindWomen;

public WangPo(){ //默认的话,是潘金莲的代理
 this.kindWomen = new PanJinLian();
 }

//她可以是KindWomen的任何一个女人的代理,只要你是这一类型
public WangPo(KindWomen kindWomen){
 this.kindWomen = kindWomen;
 }

public void happyWithMan() {
 this.kindWomen.happyWithMan(); //自己老了,干不了,可以让年轻的代替
 }
public void makeEyesWithMan() {
 this.kindWomen.makeEyesWithMan(); //王婆这么大年龄了,谁看她抛媚眼?!
 }
} 

两个女主角都上场了,男主角也该出现了:
package com.cbf4life.proxy;
/**
* @author cbf4Life cbf4life@126.com
* I'm glad to share my knowledge with you all.
* 定义一个西门庆,这人色中饿鬼
*/
public class XiMenQing {

/*
 * 水浒里是这样写的:西门庆被潘金莲用竹竿敲了一下难道,痴迷了,
 * 被王婆看到了, 就开始撮合两人好事,王婆作为潘金莲的代理人
 * 收了不少好处费,那我们假设一下:
 * 如果没有王婆在中间牵线,这两个不要脸的能成吗?难说的很!
 */
public static void main(String[] args) {
 //把王婆叫出来
 WangPo wangPo = new WangPo();

 //然后西门庆就说,我要和潘金莲happy,然后王婆就安排了西门庆丢筷子的那出戏:
 wangPo.makeEyesWithMan(); //看到没,虽然表面上时王婆在做,实际上爽的是潘金莲
 wangPo.happyWithMan(); }
} 

那这就是活生生的一个例子,通过代理人实现了某种目的,如果真去掉王婆这个中间环节,直接是西门庆和潘金莲勾搭,估计很难成就武松杀嫂事件。那我们再考虑一下,水浒里还有没有这类型的女人?有,卢俊义的老婆贾氏(就是和那个固管家苟合的那个),这名字起的:“假使”,那我们也让王婆做她的代理:把贾氏素描出来:

package com.cbf4life.proxy;
/**
* @author cbf4Life cbf4life@126.com
* I'm glad to share my knowledge with you all.
*/
public class JiaShi implements KindWomen {
public void happyWithMan() {
 System.out.println("贾氏正在Happy中......"); 
 }
public void makeEyesWithMan() {
 System.out.println("贾氏抛媚眼");
 }
} 
西门庆勾贾氏:
package com.cbf4life.proxy;
/**
* @author cbf4Life cbf4life@126.com
* I'm glad to share my knowledge with you all.
* 定义一个西门庆,这人色中饿鬼
*/
public class XiMenQing {

public static void main(String[] args) {
 //改编一下历史,贾氏被西门庆勾走:
 JiaShi jiaShi = new JiaShi();
 WangPo wangPo = new WangPo(jiaShi); //让王婆作为贾氏的代理人

 wangPo.makeEyesWithMan();
 wangPo.happyWithMan();
 }
} 

说完这个故事,那额总结一下,代理模式主要使用了 Java 的多态,干活的是被代理类,代理类主要是接活,你让我干活,好,我交给幕后的类去干,你满意就成,那怎么知道被代理类能不能干呢?同根就成,大家知根知底,你能做啥,我能做啥都清楚的很,同一个接口呗。


Python画常见分布的概率密度图 因为做概随大作业,了解了一些python画概率分布图的方法。 阅读详情

相关推荐

如何在离线的电脑上部署一个本地Deepseek(使用ollama)

例如,如果您的显卡显存为 16GB,官方推荐使用 32b 大小的 DeepSeek 模型。请根据您的硬件配置选择适合的模型版本,以获得最佳性能。首先我们需要将ollama和chatbox的安装包,Deepseek模型文件通过U盘或者光盘的形式导入到这台不能联网的电脑上。按照时间排序,找到最大的那个文件,就是gguf格式的模型,复制出来,改名为qwen2.5-coder0.5b.gguf。:基于开源模型(如 QWEN 和 LLAMA)微调,参数量从 1.5B 到 70B 不等,适合本地硬件部署。

qq_41854911的博客 1万+

Forward proxy 以及 reverse proxy

Overview We've talked about reverse proxy servers and how they can really be good at protecting the servers in your internal network. Lately, however, we've realized that some people actually think w

yisaca的博客 1167

手把手教你用Chrome DevTools逆向分析抖音a_bogus参数(附完整日志插桩方法)

本文详细介绍了如何使用Chrome DevTools逆向分析抖音a_bogus参数的生成逻辑,包括XHR断点定位、日志插桩追踪和加密核心逻辑解析。通过实战案例,帮助开发者掌握逆向工程技巧,应对抖音接口的动态加密变化,特别适合研究dy接口和a_bogus参数的技术人员。

weixin_27741699的博客 786

黑马程序员-----动态代理Proxy

---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ---------------------- 1.动态代理 如果要为已存在的多个具有相同接口的目标类的方法增加一些系统功能,如异常处理,日志,计算方法运行时间等等,该怎样做? 这时候需要用到代理:编写一个与目标类具有相同接口的代理类,代理类的方法调用目标

ypkobe24的专栏 812

MT6816磁编码器在无人机电调中的实战应用:从选型到调试全记录

本文详细介绍了MT6816磁编码器在无人机电调系统中的实战应用,涵盖选型、硬件集成、软件配置到飞行测试的全流程。通过对比霍尔传感器和光电编码器,突出MT6816在角度分辨率、安装公差和抗振动能力等方面的优势,为无人机动力系统提供高精度控制解决方案。

pandas7gardener的博客 234

Open Dynamics Engine(ODE)物理引擎基础教程(I)——特点介绍

下一教程 Open Dynamics Engine(ODE)物理引擎基础教程(II)——相关概念 (在这一教程中将学习刚体、关节、碰撞的概念在ODE中的特点) 本文结构引言介绍特点使用ODE总结 引言 本文翻译自ODE官方教程英文版,有些地方增加了自己的理解。这一节介绍ODE的相关概念。 基础教程英文原版链接【http://ode.org/wiki/index.php?title=Manua...

腿足机器人领域 1677

逆向代理服务器(Reverse Proxy)原理及用途

本文内容翻译自 wiki:Reserve server 有逆向代理服务器,肯定就有正向的代理服务器(Proxy Server),下面介绍他们的原理 Proxy Servr原理: 两台电脑 通过第三台电脑进行沟通的时候,第三台电脑就扮演着代理服务器(proxy)。以上图为例,Bob并不知道信息去想哪里,所以proxy可以用与隐藏隐私 Reverse Proxy

Leslie的专栏 1万+

SAP FICO应付票据平台开发说明书(包括测试样例、程序代码仅作参考,不保证一定可以运行)

SAP FICO应付票据平台开发说明书(包括测试样例、程序代码仅作参考,不保证一定可以运行)

我好像病了的博客 378

代理模式(Proxy Pattern)

代理模式是常用的结构型设计模式之一,当直接访问某些对象存在问题时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,所访问的真实对象与代理对象需要实现相同的接口。根据代理模式的使用目的不同,代理模式又可以分为多种类型,如远程代理、虚拟代理、保护代理等,他们应用于不同的场合,满足用户的不同需求

???? 1421

CAN总线数据采集与分析

在CAN总线数据采集中,数据采集是指从CAN网络中获取数据,并将其存储在本地或远程数据库中。数据源:明确数据源,如CAN总线、CANoe/CANalyzer工具等。数据格式:确定数据格式,如CAN消息、信号值、环境变量等。数据存储:选择数据存储方式,如本地文件、数据库、云存储等。在CAN总线数据分析中,数据分析是指对采集到的数据进行处理和分析,以提取有用的信息。数据处理:对采集到的数据进行处理,如滤波、去噪、归一化等。数据分析:对处理后的数据进行分析,如统计分析、趋势分析、故障诊断等。数据可视化。

闲人编程的博客 4042

大语言模型在金融风险预警中的推理应用探索

金融行业一直面临着各种风险,如信用风险、市场风险、操作风险等。准确及时的风险预警对于金融机构的稳定运营和投资者的利益保护至关重要。传统的金融风险预警方法主要基于结构化数据和统计模型,虽然在一定程度上能够识别风险,但对于非结构化数据的处理能力有限,难以捕捉到复杂的风险因素和潜在的风险趋势。大语言模型作为自然语言处理领域的重要突破,具有强大的语言理解和生成能力,能够处理各种形式的文本数据。

AI天才研究院 1169

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

代理模式 在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。 在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。 介绍 意图:为其他对象提供一种代理以控制对这个对象的访问。 主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操...

LJW874362735的博客 225

基于STM32L4XX的环境光传感器(VCNL4040M3OE)应用程序设计

• 集成模块:红外发射器(IRED)、环境光传感器(ALS)、接近传感器(PS)及信号调理IC。#define VCNL4040_I2C_ADDR (0x60 << 1) // 7位地址左移一位。// 组合成16位值。// I2C总线句柄。// 设置参数:ALS集成时间160ms,中断禁止,ALS功能开启。// 设置参数:PS工作频率80Hz,开红外二极管,PS功能开启。// 初始化I2C外设。• 输出类型:I2C总线(ALS/PS)// 2. 配置环境光传感器 (ALS) 并启动。

myron6688的博客 143

代理模式(Proxy Pattern)详解

代理模式是一种结构型设计模式,通过创建代理对象来间接访问目标对象(委托类),实现对目标对象的访问控制、权限验证、延迟加载或功能增强。代理对象起到中介作用,它不仅仅是对目标对象的直接替代,还能在访问目标对象时增加一些额外的逻辑。

FHKHH的博客 1146

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

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

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

代理模式Proxy Pattern

代理模式:(Proxy Pattern),一个类代表另一个类的功能,一般用于对要访问的类做一些控制、功能增强,同时又不想影响原来类的正常业务。缺点:因为代理对象,需要实现与目标对象一样的接口,如果目标接口类繁多,会导致代理类也多,同时一旦接口增加方法,则目标对象和代理类都需要维护。代理模式是一种设计模式,在不改变代码的情况下,实现对目标对象的功能扩展,甚至可以对目标对象进行功能覆盖或重写。静态代理:(目标接口、目标接口的实现、代理类),在项目中很少用,但是通过静态代理能够更好的了解动态代理。

忆亦何为的博客 656

lwip-2.0.3

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

代理模式 Proxy Pattern

代理模式 Proxy Pattern在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。 介绍 意图:为其他对象提供一种代理以控制对这个对象的访问。 主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(

kanbujian 451

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

二十三种设计模式——代理模式(Proxy Pattern)

代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。 在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。 介绍 意图:为其他对象提供一种代理以控制对这个对象的访问。 主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制...

也曾北风温柔以待 378

代理模式 (Proxy Pattern)

代理模式(Proxy Pattern)是一种结构型设计模式,它通过提供一个代理(或称代表)对象来控制对另一个对象的访问。这种模式创建了一个代理对象,用来代表实际对象的功能,从而可以在不直接访问实际对象的情况下进行操作。代理模式的核心思想是将客户端与实际执行功能的对象分离,引入一个中介层(代理层),由代理对象来决定是否和如何访问实际对象。这种间接层可以用于多种目的,比如控制访问、延迟初始化、实现安全检查、添加额外的功能(例如日志记录、事务处理等)。主题(Subject)接口。

haoxin963的专栏 680

代理模式-Proxy Pattern

在有些情况下,一个客户不能或者不想直接访问另一个对象,这时需要找一个中介帮忙完成某项任务,这个中介就是代理对象。例如,购买火车票不一定要去火车站买,可以通过 12306 网站或者去火车票代售点买。又如找女朋友、找保姆、找工作等都可以通过找中介完成。 在软件设计中,使用代理模式的例子也很多,例如,要访问的远程对象比较大(如视频或大图像等),其下载要花很多时间。还有因为安全原因需要屏蔽客户端直接访问真...

心猿意碼 5819

java——代理模式(Proxy Pattern)

9.代理模式(Proxy Pattern)

超人迪X 135

代理模式(Proxy Pattern)

只在必要时生成实例 代理模式可以简单的看作是有个中间人代替你进行工作,当中间人完成不了时,才会由你出马完成。 1.具体实例 Printable接口 /** * @author Jay * @date 2019/6/29 23:40 * @description 打印接口 */ public interface Printable { /** * 设置名字 *...

JayCoding 243
上一篇: 策略模式【Strategy Pattern】
下一篇: 单例模式【Singleton Pattern】
涛濤
博客等级 码龄12年 136粉丝 92原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值