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

静态代理 设计模式

在 Java 中,静态代理是一种设计模式,它通过在编译期就确定代理类与被代理类的关系,实现对目标对象的增强。

静态代理包含以下几个核心角色:

  1. 抽象主题(Subject):定义代理类和被代理类的共同接口
  2. 真实主题(Real Subject):被代理的对象,实际业务逻辑的执行者
  3. 代理(Proxy):持有真实主题的引用,在调用真实主题方法前后可以添加额外操作
// 1. 抽象主题接口
interface Subject {void doAction();
}// 2. 真实主题(被代理类)
class RealSubject implements Subject {@Overridepublic void doAction() {System.out.println("执行核心业务逻辑");}
}// 3. 代理类
class Proxy implements Subject {private Subject realSubject; // 持有真实主题的引用// 构造器初始化真实主题public Proxy() {this.realSubject = new RealSubject();}@Overridepublic void doAction() {System.out.println("代理:执行前操作"); // 增强逻辑realSubject.doAction(); // 调用真实主题方法System.out.println("代理:执行后操作"); // 增强逻辑}
}// 测试
public class SimpleProxyDemo {public static void main(String[] args) {Subject proxy = new Proxy();proxy.doAction(); // 通过代理对象调用}
}

静态代理的优点:

  • 实现简单,易于理解
  • 在不修改目标对象的前提下,能对目标对象的功能进行扩展
  • 静态代理适用于代理类较少、接口相对稳定的场景。

静态代理的缺点:

  • 代理类与被代理类必须实现同一接口,导致代码冗余
  • 当接口方法增加或修改时,代理类和被代理类都需要修改,维护成本高
  • 每个被代理类都需要对应一个代理类,类的数量会急剧增加

http://www.dtcms.com/a/389012.html

相关文章:

  • Salesforce知识点:触发器:自动化业务逻辑的核心工具详解
  • CentOS 8.5部署Zabbix6.0 agent2端
  • 【TestCenter】设置DHCP Option
  • Jenkins 安全清理孤立工作区(workspace)的 Shell 脚本:原理、实现与实战
  • WebDancer论文阅读
  • Node.js、npm 和 npx:前端开发的三剑客
  • Node.js 创建 UDP 服务
  • 【NodeJS 二维码】node.js 怎样读取二维码信息?
  • IRN论文阅读笔记
  • pacote:Node.js 生态中的包获取工具
  • 使用 Ansible 管理 Docker 容器:开关机、定时开关机及 VNC 控制
  • 【Spring AI】实现一个基于 Streamable HTTP 的 MCP Server
  • 云手机:概念、历史、内容与发展战略
  • linux服务器上安装oss对象存储(命令行工具使用oss)
  • 强化学习1.1 使用Gymnasium库
  • 日语学习-日语知识点小记-进阶-JLPT-N1阶段蓝宝书,共120语法(11):101-110语法 +(考え方15)
  • 运维分享:神卓 N600 如何实现 NAS 安全稳定访问
  • 系统集成项目管理工程师:第十四章 收尾过程组
  • 云手机通道具体是指什么?
  • C++ :实现多线程编程
  • 嵌入式科普(40)浅谈“功能安全“概念,深悟“功能安全“本质
  • 分布式系统理论-CAP和BASE
  • SaaS 安全的原则、挑战及其最佳实践指南
  • Flink on Native K8S源码解析
  • VMwarea安装
  • HarmonyOS之Swiper全解析
  • React18中性能优化方式
  • X133核心板--智能教育平板的芯动力​
  • 下载flink和flink cdc jar
  • 华为三层交换技术