简单代理模式

news2024/11/26 21:53:44

代理模式

代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。

结构图如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

ISubject接口,定义了RealSubject和Proxy的共用接口方法,这样就可以在任何使用RealSubject的地方使用Proxy代理。

  • ISubject接口
public interface ISubject {
    void request();
}
  • RealSubject类,定义Proxy所代表的真实实体
public class RealSubject implements ISubject {

    @Override
    public void request() {
        System.out.println("真实请求");
    }
    
}
  • Proxy类,保存一个引用使得代理可以访问实体,并实现和RealSubject类共用的方法,可以用来代替实体
public class Proxy implements ISubject {
    // 被代理对象的引用
    private RealSubject realSubject;
    // 初始化赋值
   	public Proxy() {
        this.realSubject = new RealSubject();
    }
    @Override
    public void request() {
        this.realSubject.request();
    }
}

  • Client客户端
Proxy proxy = new Proxy();
proxy.request();

代理模式的应用

一般来说,代理模式分为四种:

  • 远程代理
  • 虚拟代理
  • 安全代理
  • 智能指引

远程代理

远程代理,也就是为一个对象在不同的地址空间提供局部代表。这样可以隐瞒一个对象存在于不同地址空间的事实。

比如:WebService,项目生成的一个wsdl文件和相关的一些文件,其实它们就是代理,使得客户端调用代理就可以解决远程访问的问题。

虚拟代理

虚拟代理是根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象。

这样可以达到性能的最优化,比如打开一个HTML网页,里面可能有很多的文字和图片,但还是可能很快打开它,文字是先被加载的,但是图片确是一张一张下载完毕后才能看到的。那么哪些未下载完毕的图片框,就是通过虚拟代理替代了真实的图片,此时代理存储的是真实图片的路径和尺寸。

安全代理

用来控制真实对象访问时的权限。一般用于对象应该有不同的访问权限的时候。

智能指引

智能指引,是指当调用真实对象时,代理另外一些事情。如计算真实对象的引用次数;或第一次引用一个持久对象时,将它放入内存中;或访问一个实际对象前,检查是否被锁住了。它们都是通过代理在访问一个对象时加一些内务处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1173168.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

心脏骤停急救赋能

文章目录 0. 背景知识1. 遇到有人突然倒地怎么办1.1 应急反应系统1.2 高质量CPR1.2.1 胸外按压1.2.2 人工呼吸 1.3 AED除颤1.3.1 AED用法 1.4 高级心肺复苏1.5 入院治疗1.6 康复 0. 背景知识 中国每30s就有人倒地,他们可能是工作压力大的年轻人(工程师群…

用Java(C语言也可以看)实现冒泡排序和折半查找(详细过程图)+逆序数组

目录 一、冒泡排序 1.冒泡排序介绍 2.排序的思路 3.完整代码 二、折半查找 1.折半查找介绍 2.查找的思路 3.完整代码 三、逆序数组 1.逆序思路 2..完整代码 一、冒泡排序 冒泡排序是众多排序的一种,无论在C语言或者Java中都很常见,后续在数据…

CleanMyMac X2024试用版下载及使用教程

CleanMyMac X是一款颇受欢迎的专业清理软件,拥有十多项强大的功能,可以进行系统清理、清空废纸篓、清除大旧型文件、程序卸载、除恶意软件、系统维护等等,并且这款清理软件操作简易,非常好上手,特别适用于那些刚入手苹…

Sync Folders Pro(文件夹数据同步工具)

Sync Folders Pro for Mac 是一款功能强大的文件夹同步工具,旨在帮助用户在 Mac 计算机和移动设备之间创建双向同步。这款软件支持各种文件系统和设备,如 iPhone,iPad,iPod,Android 等。通过这款软件,用户可…

【Linux】 基础命令 第一篇

目录 ls​编辑 ls -l ls -a ls -i ls ./* cd指令&&pwd cd . && cd .. 绝对路径: dir/Linux/2023/10 相对路径: 跳转至另一路径​编辑 cd~ cd - touch指令(创建文件) stat指令: mkdir 指令(创建文件夹) tree指…

win10设置windows永不更新

以下方法能全部设置都要全部设置。 方法一:Windows设置 要想关闭Win10自动更新,比较简单的一种方法就是进入到Windows设置中,将Windows更新直接关闭。步骤如下: 1、按“Windows I”键,打开Windows设置,再…

【C语言基础入门】二级指针、一维数组与指针、二维数组与指针

文章目录 前言一. 二级指针1.1 二级指针是什么?1.2 二级指针使用示例1.3 拓展:n级指针 二. 一维数组与指针:2.1 利用指针遍历数组:2.2 指针数组2.3 数组指针 三、 二维数组指针3.1 二维数组指针是什么?示例代码 3.2 指针数组示例代码 3.3 利用…

【Hadoop】Apache Hadoop YARN

🦄 个人主页——🎐开着拖拉机回家_Linux,Java基础学习,大数据运维-CSDN博客 🎐✨🍁 感谢点赞和关注 ,每天进步一点点!加油! 目录 一、YARN概述 二、YARN基础架构 2.1 ResourceManager&#x…

Java 正则表达式分组匹配

前几篇文章都是简单判断是否满足匹配规则,当需要提取匹配结果时就用到分组匹配。 分组匹配 可以判断是否满足正则表达式,然后提取出子串。 有些时候电话号码是以 123-4567-8899 这样显示的,我们要判断某个字符串是这种形式的并分别提起三段…

总线类设备驱动——SPI

目录 一、 SPI协议简介 二、 Linux SPI驱动 三、 SPI设备驱动范例 一、 SPI协议简介 SPI(Serial Peripheral Interface)由 Motorola 开发,他并不是严格意义上的标准协议但是几乎所有的厂商都遵从这一协议,所以可以说它是一个“事实上的”协议。SPI 是同…

学习GTEx数据库

每个个体的不同的器官组织的基因(Gene)都是相同的,但为什么有的表型为肝脏组织,帮助人类代谢?有的是肌肉组织,帮助人类运动?其原因是,不同的人体组织表达的基因并不相同。 &#xff…

行业安卓主板-基于RK3568/3288/3588的AI智能网络广告机/自动售货机/收银机解决方案(三)

广告机 智能网络广告机通过网络将音视频、图片、文档、网页等自由排版创建成节目发布到终端。可针对不同的终端统一管理,统一发布;针对应用场景的集中和分散,可以选用局域网管理和云服务器管理。 自动售货机 随着物联网、大数据、人工智能的…

2024长三角大数据产业博览会(世亚智博会)数据赋能·智创未来

2024长三角国际大数据产业博览会,定于3月份在沪召开,展会始终秉承“全球视野、国家高度、产业角度、企业立场”的办会理念,实现每届展会成功、圆满、精彩举办,集聚效应和影响力不断增强。本次展会将汇聚全球大数据产业的领军企业和…

无法加载文件 C:\Program Files\nodejs\cnpm.ps1,因为在此系统上禁止运行脚本。有

cnpm : 无法加载文件 C:\Program Files\nodejs\cnpm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID135170 中的 about_Execution_Poli cies。 所在位置 行:1 字符: 1 cnpm run debug ~~~~ Categ…

CleanMyMac X2024永久激活码许可证

如果你拥有苹果电脑,那么就非常有必要在Mac上安装CleanMyMac,不是只有Windows才会产生垃圾,Mac同样的也会,定期清理Mac垃圾,可以释放磁盘空间。 CleanMyMac X 是一款流行的 Mac 清理工具,具有许多功能&…

paragon2024好用的NTFS工具

Mac OS X 对NTFS——Windows PC的主要文件系统——提供极少支持。您无法在NTFS分区中创建、删除或者修改文件或文件夹,而仅仅只能读取。Paragon NTFS for Mac官方版一直是Mac OS平台上最受欢迎的NTFS硬盘格式读取工具,有了NTFS for Mac ,安装…

Leetcode41缺失的第一个正数

思路:原地哈希表 长度为N的数组,没有出现过的正整数一定是1~N1中的一个。 此时会思考能不能用一个哈希表来保存出现过的1~N1的数,然后从 1 开始依次枚举正整数,并判断其是否在哈希表中 但是题目要求常数级别的空间,就不…

多级缓存之JVM进程缓存

1.什么是多级缓存 传统的缓存策略一般是请求到达Tomcat后,先查询Redis,如果未命中则查询数据库,如图: 存在下面的问题: 请求要经过Tomcat处理,Tomcat的性能成为整个系统的瓶颈 Redis缓存失效时&#xff0…

新麦同城到家预约上门小程序V3全开源版 vue后端+unipp开源前端+小程序端源码安装测试教程

新麦同城预约系统,是近年来快速崛起并广受好评的一站式上门服务预约平台。它集合了众多服务项目,包括家政、维修、清洁等,将原本琐碎冗杂的服务流程简化,让你享受轻松预约、专业服务一步到位的便捷生活体验。今天就与播播资源一起…

vivado 布线分析

在“ Device ”窗口中开启“ Routing Resources ” ( 布线资源 ) 即可查看具体的布线资源。 缩小时显示抽象视图。抽象视图 : • 精简穿过器件的布线。 • 根据穿过特定区域的布线数量显示不同粗细的线条。 类似地 , 布局以块…