豆包 Java的23种设计模式

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

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

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

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

相关文章

Redis7学习--详解哨兵,文件配置、主客观下线

目录 一、前言 二、哨兵 1、是什么? 2、哨兵的功能 3、案例演示 Redis Sentinel 架构 配置说明 哨兵配置文件 主从配置文件 主节点宕机后各节点状态 主从切换后配置文件的自动调整 4、哨兵运行流程和选举原理 SDOWN主观下线 ODOWN客观下线 选出新的主节…

Android 项目:画图白板APP开发(二)——历史点、数学方式推导点

上一章我们讲解了如何绘制顺滑、优美的曲线,为本项目的绘图功能打下了基础。本章我们将深入探讨两个关键功能的实现:历史点和数学方式推导点。这些功能将大幅提升我们白板应用的专业性和用户体验。一、History点之前在onTouchEvent中获取的MotionEvent&a…

25. for 循环区别

1. 基本 for 循环 for (let i 0; i < 10; i) {console.log(i); }特点&#xff1a; 适用于已知循环次数的情况使用数字索引进行迭代可以精确控制循环过程性能最好&#xff0c;开销最小 2. for…in 循环 // 数组示例 for (let i in [1, 2, 3]) {console.log(i, typeof i); //…

Trae 辅助下的 uni-app 跨端小程序工程化开发实践分享

大家好&#xff0c;我是不如摸鱼去&#xff0c;欢迎来到我的AI编程分享专栏。 这次来分享一下&#xff0c;我使用 Trae 作为主要AI编程工具&#xff0c;开发 uni-app 跨平台小程序的完整实践经验。我在实际的开发过程中&#xff0c;探索了 Trae 辅助开发的具体应用场景和效果&…

Vue3 + Element Plus 人员列表搜索功能实现

设计思路使用Element Plus的el-table组件展示人员数据 在姓名表头添加搜索图标按钮 点击按钮弹出搜索对话框 在对话框中输入姓名进行搜索 实现搜索功能并高亮匹配项下面是完整的实现代码&#xff1a;<!DOCTYPE html> <html lang"zh-CN"> <head><…

告别手动优化!React Compiler 自动记忆化技术深度解析

概述 React Compiler 是 React 团队开发的一个全新编译器&#xff0c;目前处于 RC&#xff08;Release Candidate&#xff09;阶段。这是一个仅在构建时使用的工具&#xff0c;可以自动优化 React 应用程序&#xff0c;无需重写任何代码即可使用。 核心特性 自动记忆化优化 …

【从零开始学习Redis】项目实战-黑马点评D2

商户查询缓存 为什么用缓存&#xff1f;作用模型缓存流程按照流程编写代码如下 Service public class ShopServiceImpl extends ServiceImpl<ShopMapper, Shop> implements IShopService {Resourceprivate StringRedisTemplate stringRedisTemplate;Overridepublic Resul…

后端Web实战-MySQL数据库

目录 1.MySQL概述 1.1 安装 1.1.1 版本 1.1.2 安装 1.1.3 连接 1.2 数据模型 1.3 SQL简介 1.3.1 分类 1.3.2 SQL通用语法 2.DDL 2.1 数据库操作 2.2 图形化工具 2.2.1 使用 2.3 表操作 2.3.1 创建表 2.3.1.1约束 2.3.1.2 数据类型 2.3.1.3 案例 2.3.2 DDL&am…

开源数据发现平台:Amundsen 本地环境安装

Amundsen 是一个数据发现和元数据引擎&#xff0c;旨在提高数据分析师、数据科学家和工程师与数据交互时的生产力。目前&#xff0c;它通过索引数据资源&#xff08;表格、仪表板、数据流等&#xff09;并基于使用模式&#xff08;例如&#xff0c;查询频率高的表格会优先于查询…

ubuntu18.04部署cephfs

比起君子讷于言而敏于行&#xff0c;我更喜欢君子善于言且敏于行。 目录 一. 准备工作&#xff08;所有节点&#xff09; 1. /etc/hosts 2. 安装python2 3. 配置普户免密sudo 4. 准备好四块盘&#xff0c;一块hddsdd为一组&#xff0c;一台设备上有一组 5. 添加源 二. 安…

VMD+皮尔逊+降噪+重构(送报告+PPT)Matlab程序

1.程序介绍:以含白噪声信号为例&#xff1a;1.对信号进行VMD分解2.通过皮尔逊进行相关性计算3.通过设定阈值将噪声分量和非噪声分量分别提取出4.对非噪声信号进行重构达到降噪效果包含评价指标&#xff1a;% SNR&#xff1a;信噪比% MSE&#xff1a;均方误差% NCC&#xff1a;波…

UE5多人MOBA+GAS 45、制作冲刺技能

文章目录添加技能需要的东西添加本地播放GC添加冲刺tag添加一个新的TA用于检测敌方单位添加冲刺GA到角色中监听加速移动速度的回调创建蒙太奇添加GE添加到数据表中添加到角色中纠错添加技能需要的东西 添加本地播放GC 在UCAbilitySystemStatics中添加 /*** 在本地触发指定的游…

分库分表和sql的进阶用法总结

说下你对分库分表的理解分库分表是⼀种常⽤的数据库⽔平扩展&#xff08;Scale Out&#xff09;技术&#xff0c;⽤于解决单⼀数据库性能瓶颈和存储容量限制的问题。在分库分表中&#xff0c;数据库会根据某种规则将数据分散存储在多个数据库实例和表中&#xff0c;从⽽提⾼数据…

紫金桥RealSCADA:国产工业大脑,智造安全基石

在工业4.0时代&#xff0c;数字化转型已成为企业提升竞争力的核心路径。作为工业信息化的基石&#xff0c;监控组态软件在智能制造、物联网、大数据等领域发挥着关键作用。紫金桥软件积极响应国家“两化融合”战略&#xff0c;依托多年技术积淀与行业经验&#xff0c;重磅推出跨…

朗空量子与 Anolis OS 完成适配,龙蜥获得抗量子安全能力

近日&#xff0c;苏州朗空后量子科技有限公司&#xff08;以下简称“朗空量子”&#xff09;签署了 CLA&#xff08;Contributor License Agreement&#xff0c;贡献者许可协议&#xff09;&#xff0c;加入龙蜥社区&#xff08;OpenAnolis&#xff09;。 朗空量子是一家后量子…

C#WPF实战出真汁08--【消费开单】--餐桌面板展示

1、功能介绍在这节里&#xff0c;需要实现餐桌类型展示&#xff0c;类型点击切换事件&#xff0c;餐桌面板展示功能&#xff0c;细节很多&#xff0c;流程是UI设计布局-》后台业务逻辑-》视图模型绑定-》运行测试2、UI设计布局TabControl&#xff0c;StackPanel&#xff0c;Gri…

2025年机械制造、机器人与计算机工程国际会议(MMRCE 2025)

&#x1f916;&#x1f3ed;&#x1f4bb; 探索未来&#xff1a;机械制造、机器人与计算机工程的交汇点——2025年机械制造、机器人与计算机工程国际会议&#x1f31f;MMRCE 2025将汇聚全球顶尖专家、学者及行业领袖&#xff0c;聚焦机械制造、机器人和计算机工程领域的前沿议题…

Vue Router 嵌套路由与布局系统详解:从新手到精通

在Vue单页应用开发中&#xff0c;理解Vue Router的嵌套路由机制是构建现代管理后台的关键。本文将通过实际案例&#xff0c;深入浅出地解释Vue Router如何实现布局与内容的分离&#xff0c;以及<router-view>的嵌套渲染原理。什么是嵌套路由&#xff1f;嵌套路由是Vue Ro…

Grafana 与 InfluxDB 可视化深度集成(二)

四、案例实操&#xff1a;以服务器性能监控为例 4.1 模拟数据生成 为了更直观地展示 Grafana 与 InfluxDB 的集成效果&#xff0c;我们通过 Python 脚本模拟生成服务器性能相关的时间序列数据。以下是一个简单的 Python 脚本示例&#xff0c;用于生成 CPU 使用率和内存使用量…

.net印刷线路板进销存PCB材料ERP财务软件库存贸易生产企业管理系统

# 印刷线路板进销存PCB材料ERP财务软件库存贸易生产企业管理系统 # 开发背景 本软件原为给苏州某企业开发的pcb ERP管理软件&#xff0c;后来在2021年深圳某pcb 板材公司买了我们的软件然后在此基础上按他行业的需求多次修改后的软件&#xff0c;适合pcb板材行业使用。 # 功能…