豆包 Java的23种设计模式

Java的23种设计模式是软件开发中常用的设计思想总结,根据用途可分为三大类:创建型、结构型和行为型。
一、创建型模式(5种) 用于处理对象创建机制,隐藏创建逻辑,使程序更灵活。

  • 单例模式:保证一个类仅有一个实例,并提供全局访问点(如日志工具类)。​
    • 工厂方法模式:定义创建对象的接口,让子类决定实例化哪个类(如不同数据库连接的创建)。
  • ​- 抽象工厂模式:提供一个接口,用于创建相关或依赖对象的家族,无需指定具体类(如跨平台UI组件库)。
  • ​- 建造者模式:将复杂对象的构建与表示分离,使同样的构建过程可创建不同表示(如分步构建文档)。​
    • 原型模式:通过复制现有对象来创建新对象,提高创建效率(如大量相似对象的生成)。
  • 二、结构型模式(7种) 用于处理类或对象的组合,实现更灵活的结构。
    • 适配器模式:将一个类的接口转换成客户期望的另一个接口,解决兼容性问题(如旧系统接口适配新系统)。
  • ​- 装饰器模式:动态给对象添加额外职责,不改变其结构(如给文本编辑器增加拼写检查功能)。​
    • 代理模式:为其他对象提供代理以控制访问(如远程服务代理、权限代理)。
  • ​- 外观模式:提供一个统一接口,简化子系统的复杂交互(如电脑启动时统一调用CPU、内存等组件)。
  • ​- 桥接模式:将抽象与实现分离,使两者可独立变化(如跨平台的图形绘制,抽象形状与具体绘制方式分离)。
  • ​- 组合模式:将对象组合成树形结构,统一处理单个对象和组合对象(如文件系统的文件与文件夹)。
  • ​- 享元模式:共享细粒度对象,减少内存消耗(如文字处理软件中的字符缓存)。
  • 三、行为型模式(11种) 用于描述对象间的交互和职责分配。
    • 策略模式:定义算法家族,让它们可互相替换,独立于使用它们的客户(如不同的排序算法选择)。
  • ​- 模板方法模式:定义算法骨架,将步骤延迟到子类实现(如框架中的初始化流程)。​
    • 观察者模式:对象间一对多依赖,当一个对象变化时,所有依赖者收到通知(如订阅-发布系统)。​
    • 迭代器模式:提供遍历聚合对象元素的方法,不暴露内部结构(如集合类的迭代器)。
  • ​- 责任链模式:将请求传递给多个处理器,直到被处理(如日志级别过滤、审批流程)。​
    • 命令模式:将请求封装为对象,支持参数化、队列化请求(如遥控器按钮控制家电)。
  • ​- 备忘录模式:捕获对象状态并保存,以便后续恢复(如游戏存档功能)。​
    • 状态模式:允许对象在内部状态改变时改变行为,类似状态机(如订单的不同状态切换)。​
    • 访问者模式:分离算法与数据结构,在不修改数据结构的情况下增加新操作(如报表生成对不同数据的处理)。
  • ​- 中介者模式:用一个中介对象协调多个对象的交互,减少直接依赖(如聊天室的消息转发)。​
    • 解释器模式:定义语言的语法规则并解析(如简单的表达式解析器)。
  • 这些模式并非强制规范,而是解决特定问题的经验总结,实际开发中需根据场景灵活选用。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RISC-V汇编新手入门

有空就更。一、基础核心概念:什么是汇编语言?汇编语言是直接对应 CPU 指令的低级编程语言,每一行汇编代码基本对应一条 CPU 能直接执行的指令。相比 C 语言等高级语言,汇编更贴近硬件,能直接操作 CPU 的寄存器、内存和…

[每周一更]-(第155期):Go 1.25 发布:新特性、技术思考与 Go vs Rust 竞争格局分析

作为一名 Go 研发工程师,我一直关注 Go 语言的演进。2025 年 8 月 12 日,Go 团队发布了 Go 1.25 版本,这是继 Go 1.24 之后的又一重要更新。 这个版本聚焦于工具链优化、运行时改进和实验性功能引入,没有引入破坏性语言变化&#…

【网络安全】Webshell的绕过——绕过动态检测引擎WAF-缓存绕过(Hash碰撞)

目录 一、前言 二、环境 三、了解动态检测引擎 3.1 shuffle — 打乱数组 3.2 mt_srand — 播下一个更好的随机数发生器种子 四、缓存导致的绕过【hash碰撞】 五、总结 一、前言 在渗透测试过程中,成功获取 WebShell 时难免遇到 Web 应用防火墙(WA…

【Linux | 网络】高级IO

一、IO是什么二、五种IO模型2.1 理解五种IO模型2.2 五种IO模型的定义三、 非阻塞IO3.1 fcntl函数3.2 实现函数SetNoBlock(将文件描述符设置为非阻塞)四、多路转接IO4.1 多路转接IO之select4.1.1 select函数4.1.2 select的优缺点4.2 多路转接IO之poll4.2.…

图解简单选择排序C语言实现

1 简单选择排序 简单选择排序(Simple Selection Sort)是一种基础且直观的排序算法,其核心思想是通过重复选择未排序部分中的最小(或最大)元素,并将其放到已排序部分的末尾,逐步完成整个序列的排…

[go] 桥接模式

桥接模式 是一种结构型设计模式, 可将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构, 从而能在开发时分别使用。 模型说明抽象部分(Abstraction)提供高层控制逻辑,依赖于完成底层实际工作的实现对象…

【自用】JavaSE--特殊文件Properties与XML、日志技术

特殊文件概述使用特殊文件可以存储多个有关系的数据,作为系统的配置信息属性文件类似于键值对,一一对应存储数据(比如用户名与密码)XML文件存储多个用户的多个属性更适合,适合存储更复杂的数据Properties注:这个属性文件的后缀即使…

【轨物方案】预防性运维:轨物科技用AI+机器人重塑光伏电站价值链

传统光伏电站的运维模式,常常被视为一个“成本中心”,其“故障-抢修”的逻辑模式,不仅响应滞后、效率低下,更难以从根本上提升资产的长期价值。然而,随着新能源行业的深刻发展,运维的价值被重新定义&#x…

【自动化运维神器Ansible】Ansible比较操作符详解:从基础到实战应用

目录 引言 1 Ansible比较操作符概述 1.1 什么是比较操作符&#xff1f; 1.2 比较操作符的分类与核心符号 2 核心比较操作符详解 2.1 相等与不等&#xff1a;与! 语法与基础用法 示例&#xff1a;字符串与数值比较 注意事项 2.2 大小比较&#xff1a;>、>、<…

配置 Docker 镜像加速,解决 docker pull 拉取镜像失败、docker search 查询镜像失败等问题

一、概述 记录时间 [2025-08-16] 在 Docker 学习中&#xff0c;可能会遇到诸如 docker 远程仓库无法访问、docker pull 拉取镜像失败、docker search 查询镜像失败等问题。 这是由于国内网络对 docker 远程仓库的访问受到限制。 那么在国内如何获取 docker 镜像呢&#xff1f…

智能工厂生产监控大屏-vue纯前端静态页面练习

学习前端还是非常有意思的&#xff0c;因为前端真的是可见即所得&#xff0c;可以做出来非常好看漂亮的页面&#xff0c;最近我就在使用前端技术 做一些大屏报表&#xff0c;在制作这些大屏报表过程中&#xff0c;又熟练的练习了自己的学到的相关的前端技术&#xff0c;接下来把…

Android 欧盟网络安全EN18031 要求对应的基本表格填写

Android 欧盟网络安全EN18031 要求对应的基本表格填写 文章目录Android 欧盟网络安全EN18031 要求对应的基本表格填写一、背景二、18031认证预填表格三、其他1、Android EN 18031 要求对应的基本表格小结2、EN 18031的要求表格内容填写3、一定要做三方认证&#xff1f;4、欧盟网…