豆包 Java的23种设计模式

Java的23种设计模式是软件开发中常用的设计思想总结,根据用途可分为三大类:创建型、结构型和行为型。

一、创建型模式(5种) 用于处理对象创建机制,隐藏创建逻辑,使程序更灵活。

  • 单例模式:保证一个类仅有一个实例,并提供全局访问点(如日志工具类)。
    • 工厂方法模式:定义创建对象的接口,让子类决定实例化哪个类(如不同数据库连接的创建)。
    • 抽象工厂模式:提供一个接口,用于创建相关或依赖对象的家族,无需指定具体类(如跨平台UI组件库)。
    • 建造者模式:将复杂对象的构建与表示分离,使同样的构建过程可创建不同表示(如分步构建文档)。
    • 原型模式:通过复制现有对象来创建新对象,提高创建效率(如大量相似对象的生成)。
  • 二、结构型模式(7种) 用于处理类或对象的组合,实现更灵活的结构。
    • 适配器模式:将一个类的接口转换成客户期望的另一个接口,解决兼容性问题(如旧系统接口适配新系统)。
    • 装饰器模式:动态给对象添加额外职责,不改变其结构(如给文本编辑器增加拼写检查功能)。
    • 代理模式:为其他对象提供代理以控制访问(如远程服务代理、权限代理)。
    • 外观模式:提供一个统一接口,简化子系统的复杂交互(如电脑启动时统一调用CPU、内存等组件)。
    • 桥接模式:将抽象与实现分离,使两者可独立变化(如跨平台的图形绘制,抽象形状与具体绘制方式分离)。
    • 组合模式:将对象组合成树形结构,统一处理单个对象和组合对象(如文件系统的文件与文件夹)。
    • 享元模式:共享细粒度对象,减少内存消耗(如文字处理软件中的字符缓存)。
  • 三、行为型模式(11种) 用于描述对象间的交互和职责分配。
    • 策略模式:定义算法家族,让它们可互相替换,独立于使用它们的客户(如不同的排序算法选择)。
    • 模板方法模式:定义算法骨架,将步骤延迟到子类实现(如框架中的初始化流程)。
    • 观察者模式:对象间一对多依赖,当一个对象变化时,所有依赖者收到通知(如订阅-发布系统)。
    • 迭代器模式:提供遍历聚合对象元素的方法,不暴露内部结构(如集合类的迭代器)。
    • 责任链模式:将请求传递给多个处理器,直到被处理(如日志级别过滤、审批流程)。
    • 命令模式:将请求封装为对象,支持参数化、队列化请求(如遥控器按钮控制家电)。
    • 备忘录模式:捕获对象状态并保存,以便后续恢复(如游戏存档功能)。
    • 状态模式:允许对象在内部状态改变时改变行为,类似状态机(如订单的不同状态切换)。
    • 访问者模式:分离算法与数据结构,在不修改数据结构的情况下增加新操作(如报表生成对不同数据的处理)。
    • 中介者模式:用一个中介对象协调多个对象的交互,减少直接依赖(如聊天室的消息转发)。
    • 解释器模式:定义语言的语法规则并解析(如简单的表达式解析器)。
  • 这些模式并非强制规范,而是解决特定问题的经验总结,实际开发中需根据场景灵活选用。
相关推荐
Java后端的Ai之路1 小时前
【Spring全家桶】-一文弄懂Spring Cloud Gateway
java·后端·spring cloud·gateway
devmoon1 小时前
在 Polkadot Runtime 中添加多个 Pallet 实例实战指南
java·开发语言·数据库·web3·区块链·波卡
Tfly__1 小时前
在PX4 gazebo仿真中加入Mid360(最新)
linux·人工智能·自动驾驶·ros·无人机·px4·mid360
野犬寒鸦1 小时前
从零起步学习并发编程 || 第七章:ThreadLocal深层解析及常见问题解决方案
java·服务器·开发语言·jvm·后端·学习
陈桴浮海1 小时前
【Linux&Ansible】学习笔记合集二
linux·学习·ansible
云姜.1 小时前
java抽象类和接口
java·开发语言
带刺的坐椅1 小时前
Claude Code Skills,Google A2A Skills,Solon AI Skills 有什么区别?
java·ai·solon·a2a·claudecode·skills
生活很暖很治愈2 小时前
Linux——环境变量PATH
linux·ubuntu
?re?ta?rd?ed?2 小时前
linux中的调度策略
linux·运维·服务器
深圳市九鼎创展科技2 小时前
瑞芯微 RK3399 开发板 X3399 评测:高性能 ARM 平台的多面手
linux·arm开发·人工智能·单片机·嵌入式硬件·边缘计算