跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
编程语言java算法

软件设计模式三大分类详解

软件设计模式主要分为创建型、结构型和行为型三类。创建型关注对象实例化,如工厂和单例;结构型处理类与对象的组合,涉及适配器与代理;行为型则定义对象间的职责分配与通信,包含观察者与策略等。掌握这些分类有助于在架构设计中复用经验,提升代码的可维护性与扩展性。

独立开发者发布于 2014/3/24更新于 2026/6/1516 浏览
软件设计模式三大分类详解

软件设计模式(Design Patterns)是对软件开发过程中常见问题的通用解决方案总结。它们不是具体的代码实现,而是经过验证的架构思想。为了方便理解和应用,业界通常将设计模式分为三大类:创建型、结构型和行为型。

一、创建型模式

这类模式主要关注对象的创建机制,旨在解耦对象的创建和使用过程,使系统更加灵活。常见的模式包括:

  • 单例模式 (Singleton):确保一个类只有一个实例,并提供全局访问点。
  • 工厂方法模式 (Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类。
  • 抽象工厂模式 (Abstract Factory):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
  • 建造者模式 (Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
  • 原型模式 (Prototype):通过复制现有实例来创建新实例,避免重复初始化开销。

二、结构型模式

结构型模式描述了类和对象之间的组合方式,帮助我们将多个组件组合成更大的结构。

  • 适配器模式 (Adapter):将一个类的接口转换成客户希望的另一个接口,解决不兼容问题。
  • 桥接模式 (Bridge):将抽象部分与它的实现部分分离,使它们都可以独立地变化。
  • 装饰模式 (Decorator):动态地给一个对象添加一些额外的职责,比生成子类更为灵活。
  • 组合模式 (Composite):将对象组合成树形结构以表示'部分 - 整体'的层次结构。
  • 外观模式 (Facade):为子系统中的一组接口提供一个一致的界面,简化调用流程。
  • 享元模式 (Flyweight):运用共享技术有效地支持大量细粒度的对象。
  • 代理模式 (Proxy):为其他对象提供一种代理以控制对这个对象的访问。

三、行为型模式

行为型模式关注算法和对象间的职责分配,描述对象之间如何通信和交互。

  • 责任链模式 (Chain of Responsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合。
  • 命令模式 (Command):将请求封装成对象,从而使用户可以用不同的请求对客户进行参数化。
  • 解释器模式 (Interpreter):给定一个语言,定义它的文法的一种表示,并定义一个解释器。
  • 迭代器模式 (Iterator):提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部表示。
  • 中介者模式 (Mediator):用一个中介对象来封装一系列的对象交互,降低对象间的耦合度。
  • 备忘录模式 (Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。
  • 观察者模式 (Observer):定义对象间的一对多依赖关系,当一个对象改变状态时,所有依赖者都会收到通知。
  • 状态模式 (State):允许一个对象在其内部状态改变时改变它的行为。
  • 策略模式 (Strategy):定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。
  • 模板方法模式 (Template Method):定义一个操作中的算法骨架,而将一些步骤延迟到子类中。
  • 访问者模式 (Visitor):表示一个作用于某对象结构中的各元素的操作,使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。

在实际项目中,没有一种模式是万能的。理解每种模式的适用场景和优缺点,比死记硬背更重要。建议结合具体业务场景,参考经典书籍如《Head First 设计模式》或《GoF 设计模式》进行深入实践。

目录

  1. 一、创建型模式
  2. 二、结构型模式
  3. 三、行为型模式
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • ERNIE-4.5-0.3B 超轻量模型部署与实战测评
  • 物理智能 π₀ 与 π₀.5 模型深度解析:架构、训练与泛化演进
  • Stable Diffusion ComfyUI 服装替换工作流指南
  • Stable Diffusion XL 1.0 灵感画廊镜像免配置部署指南
  • C++ 学习路线图:从零基础到进阶实战指南
  • Effective Modern C++ 条款 35:基于任务与基于线程编程的对比与实践
  • 33 岁前端程序员转型大模型指南:技能树与学习路径
  • 老 MacBook 安装 Linux 部署 OpenClaw 实现 24 小时服务器
  • OpenClaw 集成飞书搭建 AI 机器人实战指南
  • C 语言实现边缘 AI 推理:量化、算子融合与内存映射实战
  • 毕业设计:基于 Neo4j 知识图谱的智能问答系统
  • Web 应用开发:从前端到后端的全栈技术实践
  • OpenWebUI 对外 HTTP 接口配置与使用指南
  • C++ 模板的两大特性:typename 用法与分离编译
  • Docker 镜像拉取超时错误解决方案
  • 文心一言 4.5 开源测评与本地部署指南
  • Java NIO 核心:Buffer 与 Channel 原理及与传统 IO 对比
  • Ubuntu 系统 Docker 完整安装及国内镜像加速配置
  • 文档解析技术在大模型训练与应用中的关键作用
  • Python 基础语法核心要点

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online