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

JAVA设计模式——(七)代理模式

JAVA设计模式——(七)代理模式

  • 介绍
  • 理解
  • 实现
    • 抽象主题角色
    • 具体主题角色
    • 代理类
    • 测试
  • 应用

介绍

代理模式和装饰模式还是挺像的。装饰模式是抽象类对装饰对象的实现,在继承装饰对象。代理模式则是直接对代理对象的实现。

理解

代理模式可以看成用一个类代表另一个类,使用代理类时,便会执行被代理对象的功能。

代理模式更多用于前后置条件运用等等,如权限控制、日志记录等。

实现

抽象主题角色

代理类和具体主题角色实现的接口类

package cn.sh.designepattern;/*** @Author song* @Version 0.0.1* @Date 2025/4/25 10:11* @Contact 643947568@qq.com*/
public interface Subject {public void operate();}

具体主题角色

package cn.sh.designepattern;/*** @Author song* @Version 0.0.1* @Date 2025/4/25 10:11* @Contact 643947568@qq.com*/
public class RealSubject implements Subject{@Overridepublic void operate() {System.out.println("执行具体操作");}
}

代理类

package cn.sh.designepattern;/*** @Author song* @Version 0.0.1* @Date 2025/4/25 10:10* @Contact 643947568@qq.com*/
public class Proxy implements Subject{private Subject subject;public Proxy(Subject subject) {this.subject = subject;}@Overridepublic void operate() {System.out.println("前置操作");subject.operate();System.out.println("后置操作");}}

测试

package cn.sh.designepattern;/*** @Author song* @Version 0.0.1* @Date 2025/4/24 16:33* @Contact 643947568@qq.com*/public class Main {public static void main(String[] args) {Proxy proxy = new Proxy(new RealSubject());proxy.operate();}
}

应用

权限控制
日志记录
远程访问
缓存代理:缓存对象结果,使得客户端可以共享这些结果。
同步代理:使得几个对象可以同时使用一个对象而不发生冲突。

http://www.xdnf.cn/news/1945.html

相关文章:

  • run code执行ts配置
  • Python爬虫实战:获取链jia网北京市海淀区最新租房信息并做分析,以供租房参考
  • Unity Shader Properties详解
  • 类《双人成行》3D动作益智冒险类双人控制游戏开发
  • iOS/Android 使用 C++ 跨平台模块时的内存与生命周期管理
  • PCI 总线学习笔记(五)
  • 【网络原理】TCP提升效率机制(二):流量控制和拥塞控制
  • 高等数学第三章---微分中值定理与导数的应用(3.1微分中值定理3.2洛必达法则)
  • 通信算法之273 : 循环自相关函数和自相关函数
  • Linux:进程的等待
  • UniApp学习笔记
  • Registry镜像仓库的安装与使用
  • 26考研 | 王道 | 数据结构 | 第八章 排序
  • 阿里云基于本地知识库构建RAG应用 | 架构与场景
  • 带根线就无敌?光纤无人机如何成为电子战的终结者
  • 使用kubeadmin 部署k8s集群
  • Unity中数据和资源加密(异或加密,AES加密,MD5加密)
  • 基于大牛直播SDK的Android屏幕扬声器采集推送RTMP技术解析
  • Linux实验课
  • c++之网络编程
  • 全链路自动化AIGC内容工厂:构建企业级智能内容生产系统
  • 计算机存储数据的顺序——小端(Little-Endian)与大端(Big-Endian)
  • chrome://inspect/#devices 调试 HTTP/1.1 404 Not Found 如何解决
  • 配置 RDP 远程桌面协议连接ubuntu服务器桌面
  • prometheus通过Endpoints自定义grafana的dashboard模块
  • C++23中if consteval / if not consteval (P1938R3) 详解
  • PySide与PyQt对比:为何PySide是更优选择
  • google ads超额投放解决策略
  • RFID使用指南
  • 大模型备案对模型训练语料的要求