设计模式——代理模式

JS设计模式之代理模式 Star这个类就是明星,StarProxy这个类就是明星经纪人,假如我们是商家,现在我们想请这个明星来参加我们的活动,我们开始和经纪人谈价格,talk出价1w,此时经纪人会做一个判断,如果价格大于等于1w,这个活动就比较适合,可以参加,代理就会去通知明星演出,如果小于1w的话,就不会,这个就是简单的代理模式,我们要访问明星,需要经过经纪人(也就是代理),才能去访问。其实就是给一个对象提供一个代理,如果要访问这个对象必须经过这个代理,先说,这个模式的优点是什么。 阅读详情

PROXY 代理

 

1、 意图

为其他对象提供一种代理以控制对这个对象的访问。

2、 适用性

  •   需要为一个对象在不同的地址空间提供局部代表的时候,可以使用远程代理。
  • 需要按照创建开销很大对象的时候,可以使用虚代理。
  •   需要控制原始对象的访问的时候,可以使用保护代理。
  • 需要在访问对象执行一些附加操作的时候,可以使用智能指引代理。

3、 结构


4、 参与者

Proxy

——保护一个引用使得代理可以访问实体。若RealSubject和Subject的接口相同,Proxy会引用Subject。

——提供一个与Subject的接口相同的接口,这样代理就可以用来代替实体。

——控制对实体的提取,并可能负责创建和删除它。

——其他功能依赖于代理的类型:

 Remote Proxy负责对请求及其参数进行编码,并向不同地址空间中的实体发送已编码的请求。

 Virtual Proxy可以缓存实体的附加信息,以便延迟对它的访问。

 Protection Proxy检查调用者是否具有实现一个请求所必需的访问权限。

Subject

——定义RealSubject和Proxy的共用接口,这样就在任何使用RealSubject的地方都可以使用Proxy。

RealSubject

——定义Proxy所代表的实体。

5、 协作

代理根据其种类,在适当的时候想RealSubject转发请求。

6、 效果

Proxy模式在访问对象时引入一定程度的间接性。根据代理的类型,附加的间接性有多种用途:

1)  Remote Proxy可以隐藏一个对象存在于不同地址空间的事实。

2)  Virtual Proxy可以进行最优化,例如根据要求创建对象。

3)  Protection Proxies和Smart Reference都允许在访问一个对象时有一些附件的内务处理。

7、 代码示例

Subject

package com.examples.pattern.proxy;

/**
 * 抽象的目标接口,定义具体的目标对象和代理公用的接口
 */
public interface Subject{

	void action();
}
RealSubject
package com.examples.pattern.proxy;

public class RealSubject implements Subject {

	 public void action() {
	        System.out.println("========");
	        System.out.println("========");
	        System.out.println("这是被代理的类");
	        System.out.println("========");
	        System.out.println("========");
	    }


}
Proxy
package com.examples.pattern.proxy;

/**   
* 代理对象 
*/
public class Proxy implements Subject {

	Subject obj;
    
    public Proxy() {
        System.out.println("这是代理类");
        obj = new RealSubject();
    }
    
    public void action() {
        System.out.println("代理开始");
        obj.action();
        System.out.println("代理结束");
    }
}

Client
package com.examples.pattern.proxy;

public class Client {

	public static void main(String[] args) {
		Subject obj = new Proxy();
		obj.action();

	}

}

8、 相关模式

Adapter:适配器为它所适配的对象提供了一个不同的接口。相反,代理提供了与它的实体相同的接口。然而,用于访问保护的代理可能会拒绝执行实体会执行的操作。因此,它的接口实际上可能只是实体接口的一个子集。

Decorator:尽管Decorator的实现部分与代理相似,但Decorator的目的不一样。Decorator为对象添加一个或多个功能,而代理则控制对对象的访问。

 

 


【WRF-Urban运行】WRF-SLUCM耦合建模参数设置及模拟运行 WRF-SLUCM耦合建模参数设置及模拟运行 阅读详情

相关推荐

【软件逆向学习记录】x64dbg调试器入门2:主调试窗口功能及字符串搜索功能介绍

在x64dbg中, ​​CPU视图 是调试过程中最核心的界面,通常被称为​​主调试窗口​​或​​调试视图​​,总体分为四个区域,代码区(反汇编),数据区(内存窗口),寄存器区和堆栈区,详细位置如下图:示例数据代码区最左侧为内存地址,第二块区域为程序代码值,原始程序代码经编译和汇编后变为二进制机器码存储在计算机中,调试器将其展示为易于阅读的十六进制,第三块区域是机器码反汇编后的汇编代码,最右侧为代码的注释窗口,有一些原始的注释,也可以自己添加注释PS:汇编和反汇编解释。

tusikong的博客 2922

设计模式之代理模式(ProxyPattern)

设计模式之代理模式(ProxyPattern) 1.图和分析 有三个角色: 代理角色 :房屋中介,代理真实角色,一般会进行一些附属操作 真实角色:房主,执行自己的业务代码即可 抽象角色:租房,一般是接口或者抽象类 2.静态代理 根据上面的图,代码实现 租房接口(interface) public interface Rent { void rent(); } 房主类,实现...

qq_38056518的博客 243

【GPIO模拟串口通信协议】

由于这段时间搞了个安卓相关的项目,需要和安卓进行Uart通信。但是选用的芯片并没有自带uart功能,所以在充分评估项目后,考虑波特率不高的情况下,决定使用GPIO去模拟串口通信协议了。

学海无涯苦作舟 2638

设计模式之代理模式ProxyPattern(六)

1、什么是代理模式?代理模式是23种设计模式中的一种。代理模式是一种结构型设计模式,它允许为其他对象提供一个替代品或占位符,以控制对这个对象的访问。2、代理模式的角色构成抽象主题(Subject):定义了真实主题和代理主题的共同接口,这样代理类可以通过实现该接口来代理真实主题。真实主题(Real Subject):定义了代理所代表的真实对象。代理(Proxy):持有对真实主题的引用,并实现了与真实主题一样的接口,客户端通过代理来访问真实主题,同时可以在访问真实主题前后进行一些额外操作。

徐泗空的博客 1460

[cryoEM] cryoSPARC简介

cryoSPARC系统结构概述 cryoSPARC是一个后端和前端高性能计算软件系统,为单颗粒冷冻电镜提供数据处理和图像分析能力,以及丰富的基于浏览器的用户截面和命令行工具。 Master-worker模式 系统基于主用户模式。 主进程(web应用,核心应用程序和MongoDB数据库)一起在主节点上运行。主节点需要相对轻量级的资源(2+ CPU< 16GB+ RAM)。 工作程序进程可以在具有GPU的任何可用节点上生成,负责所有实际计算和数据处理,并由主节点调度。注意:同一节点可以同时充当主节点和辅

进阶中的程序员吃吃的博客 7796

利用netns做自环Iperf测试

netns可以让一台机器上模拟多个网络设备,是网络虚拟化的重要组成,将不同类型的网络应用隔离。一个net namespace有自己独立的路由表,iptables策略,设备管理。本文利用netns模拟网络来实现单机上网卡自环上的iperf测试或其他网络测试。

weixin_42414349的博客 3370

[DesignPattern]ProxyPattern

代理模式玩过扮白脸、扮黑脸的游戏吗?这就是代理要做的:控制和管理访问。还记得状态模式的那台糖果机吗?现在我们需要远程监控糖果机。(在开始编码之前,需要收集需求)。远程代理 远程代理就好比“远程对象的本地代表”。何谓“远程对象“?这是一种对象,活在不同的Java虚拟机(JVM)堆中。 你的客户对象所做的就像是在做远程方法调用,但其实只是调用本地堆中的”代理“上的方法,再由代理处理所有网络通信的低层细节

xy_cpp的博客 417

数值天气预报期末复习

数值天气预报期末复习

m0_60394632的博客 7678

您的设计模式——代理模式【Proxy Pattern 】

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

411

嵌入式面试题精选100道及参考答案(4万字长文)

指针是C语言中一种特殊的变量,它存储的是另一个变量的内存地址。指针的使用提供了一种间接访问和操作内存的方法。地址操作:通过使用运算符,可以获取变量的地址,并将这个地址赋值给指针变量。间接引用:使用运算符可以访问指针指向的变量的值。动态内存分配:指针用于动态地分配和释放内存。数组操作:指针可以用于遍历和操作数组。函数参数:指针作为函数参数可以改变原始数据。字符串操作:在C语言中,字符串通常以字符数组的形式存在,并通过字符指针进行操作。// 指向数组的第一个元素i < 5;++i) {在这个例子中,

大模型大数据攻城狮的专栏 1971

【Python基础】FastAPI 从入门到项目实战操作详解

【Python基础】FastAPI从入门到使用实战操作详解

congge_study的博客 437

设计模式—代理模式

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

dmxhcwk90096748的博客 98

FFmpeg入门详解之110:RTSP协议讲解

TCP/IP 协议体系中的一个应用层协议,该协议定义了一对多应用程序如何有效地通过 IP 网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输。HTTP与RTSP相比,HTTP传送HTML,而RTSP传送的是多媒体数据。正在上传…重新上传取消RTSP是基于文本的协议,采用ISO10646字符集,使用UTF-8编码方案。行以CRLF中断(\r\n:10,13:0x0A,0x0D),包括消息类型、消息头、消息体和消息长。

福优学苑@音视频+流媒体 2529

java设计模式之 代理模式【Proxy Pattern】 详解

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

蛋蛋淡淡定的庄园 299

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

设计模式代理模式(ProxyPattern)

核心模块:抽象角色,真实角色,代理角色 所有代码请访问:git@code.aliyun.com:289804201/PatternLearn.git 使用场景:适合不方便直接访问对象的情况; 优点:协调了调用者和被调用者,减少耦合,起到了保护目标对象的作用; 缺点:由于使用代理可能会使请求速度变慢; 注意: 1,与中介者模式区别,中介者对中介双方权重

didiao11300的专栏 357

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Java设计模式之代理模式

在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。 在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。 所谓的代理者是指一个类别可以作为其它东西的接口。代理者可以作任何东西的接口:网上连接、存储器中的大对象、文件或其它 昂贵或无法复制的资源。 著名的代理模式例子为引用计数(英语:reference counting)指针...

Expaner的博客 172

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

1、定义         代理模式也称为委托模式,为一个对象提供一个代理对象,以此来控制被代理对象的访问,简单来说就是代理对象代替被代理对象来完成一些事情。         代理模式一般分为静态代理和动态代理:         静态代理:代理类在代码编译以前就已经存在。         动态代理:运行时动态的创建代理对象,可以很灵活的代理自己想要代理的对象,通过反射机制来实现。 2、使用...

inventor1024的博客 536

设计模式---代理模式(DesignPattern_Proxy)

摘录自:设计模式与游戏完美开发 十年磨一剑,作者将设计模式理论巧妙地融入到实践中,以一个游戏的完整实现呈现设计模式的应用及经验的传承 《轩辕剑》之父——蔡明宏、资深游戏制作人——李佳泽、Product Evangelist at Unity Technologies——Kelvin Lo、信仁软件设计创办人—— 赖信仁、资深3D游戏美术——刘明恺 联合推荐全书采用了整合...

su9257的博客 139

《设计模式》代理模式

定义代理模式就是为被访问的目标对象提供一个代理,此时代理对象充当访问对象和目标对象之间的媒介,通过代理对象实现对目标对象的访问。被代理的对象可以是远程对象、创建开销大的对象以及需要安全控制的对象,Java 中的代理按照代理的生成时机不同分为静态代理和动态代理,静态代理就是在编译期就生成代理对象,而动态代理是在 Java 运行时动态生成,而动态代理又分为 JDK 动态代理和 Cglib 动态代理两种。代理模式的角色组成抽象主题类(Subject):通过接口或抽象类声明真实主题和代理对象实现的业务方法。

华仔仔的博客 4001

设计模式 - 学习笔记 - 代理模式ProxyPattern

设计模式 - 学习笔记 - 代理模式ProxyPattern学习总结要点总结UML参考资料 学习总结 既然叫代理,就想一下我们什么情况用代理——不方便直接访问(控制)的时候。比如:分布式、AOP 所以核心就是间接访问(控制) 要点总结 “增加一层间接层"是软件系统中对许多复杂问题的一种常见解决方法。在面向对象系统中,直接使用某些对象会带来很多问题,作为间接层的proxy对象便是解决这一问题的常用手段。 具体proxy设计模式的实现方法、实现粒度都相差很大,有些可能对单个对象做细粒度的控制,如copy-

灵台方寸山斜月三星洞 494

设计模式之代理模式

代理模式(Proxy Pattern)是一种结构型设计模式,旨在为其他对象提供一种代理以控制对该对象的访问。它通过引入代理类来控制对目标对象的访问,代理对象与客户端进行交互,并根据具体需求对目标对象进行额外的功能扩展、权限控制、懒加载等。代理模式的核心思想是通过一个中介对象(代理对象)来替代直接访问目标对象,从而增强或改变目标对象的行为。@Override。

道可道非常道 1825

Java开发之设计模式--代理模式(Proxy Pattern)

什么是代理模式呢?我很忙,忙的没空理你,那你要找我呢就先找我的代理人吧,那代理人总要知道被代理人能做哪些事情不能做哪些事情吧,那就是两个人具备同一个接口,代理人虽然不能干活,但是被代理的人能干活呀。模拟场景:比如西门庆找潘金莲,那潘金莲不好意思答复呀,咋办,找那个王婆做代理。Java程序: 先定义一种类型的女人: package com.zanelove.proxy; /** * I'm glad

ZaneLove's blog 1075

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

本篇文章将23种设计模式中的代理模式,此篇文章为一天学习一个设计模式系列文章,后面会分享其他模式知识。

小威的博客 2万+

明华澳汉读卡器驱动安装与API调用全攻略:从选型到卡号处理

读卡器驱动安装与API调用是门禁、考勤、社保等系统集成中的常见技术环节。其核心原理在于设备类型识别、驱动匹配与卡号格式转换,技术价值在于确保数据读取的准确性与系统稳定性。典型应用场景包括门禁考勤、社保医疗、自助终端等。在实际工程中,接触式与非接触式读卡器的驱动选型、USB免驱配置、DLL位数匹配以及卡号字节序处理是关键难点。本文围绕明华澳汉读卡器,系统梳理驱动安装步骤、API调用逻辑与故障排查方法,帮助开发者快速定位并解决读卡问题。

weixin_33841503的博客 227
上一篇: 设计模式——中介者
下一篇: 设计模式——观察者
HingKwan
博客等级 码龄17年 51粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值