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

豆包 Java的23种设计模式

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

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

相关文章:

  • 微调 AnomalyCLIP——基于对象无关提示学习与全局 - 局部优化的零样本异常检测框架性能验证
  • 迅速掌握Git通用指令
  • 7 索引的监控
  • 编程算法实例-整数分解质因数
  • Mac(五)自定义鼠标滚轮方向 LinearMouse
  • 又一家茑屋书店即将歇业,精品书店的未来在哪里?
  • Bee1.17.25更新Bug,完善功能.不支持NOSQL,分库分表Sharding(2.X版有)
  • Spark03-RDD02-常用的Action算子
  • YOLO12 改进、魔改|频域自注意力求解器FSAS,通过频域高效计算自注意力,在降低时间与空间复杂度的同时保留关键特征信息,提升遮挡、小目标检测
  • PostgreSQL——用户管理
  • 【IDEA】设置Debug调试时调试器不进入特定类(Spring框架、Mybatis框架)
  • Day3--滑动窗口与双指针--2461. 长度为 K 子数组中的最大和,1423. 可获得的最大点数,1052. 爱生气的书店老板
  • 【算法】模拟专题
  • JavaScript性能优化实战(三):DOM操作性能优化
  • openEuler等Linux系统中如何复制移动硬盘的数据
  • 【Luogu】每日一题——Day20. P4366 [Code+#4] 最短路 (图论)
  • 计算机网络 Session 劫持 原理和防御措施
  • 【Luogu】每日一题——Day21. P3556 [POI 2013] MOR-Tales of seafaring (图论)
  • 裸机框架:按键模组
  • 深度学习之优化器
  • 概率论基础教程第4章 随机变量(一)
  • 《Cocos游戏开发入门一本通》第四章
  • 李宏毅NLP-11-语音合成
  • 神经网络中的梯度概念
  • 显式编程(Explicit Programming)
  • c++--文件头注释/doxygen
  • 系统学习算法 专题十七 栈
  • C++ 特殊类设计与单例模式解析
  • 编译器生成的合成访问方法(Synthetic Accessor Method)
  • Python训练营打卡Day35-复习日