沉梦听雨的编程指南 沉梦听雨的编程指南
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM
  • 新特性
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 基础篇
  • MySql
  • Redis
  • 达梦数据库
  • Spring
  • SpringBoot
  • Mybatis
  • Shiro
  • 设计须知
  • UML画图
  • 权限校验
  • 设计模式
  • API网关
  • RPC
  • 消息队列
  • SpringCloud
  • 分布式事务
  • 云存储
  • 搜索引擎
  • 多媒体框架
  • 虚拟机
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • 随笔
  • 前端环境搭建
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 脚手架搭建
  • 瑞吉外卖
  • 黑马点评
  • vue-blog
  • 沉梦接口开放平台
  • 用户中心
  • 聚合搜索平台
  • 仿12306项目
  • 壁纸小程序项目
  • RuoYi-Vue
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
Github (opens new window)

沉梦听雨

时间是最好的浸渍剂,而沉淀是最好的提纯器🚀
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM
  • 新特性
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 基础篇
  • MySql
  • Redis
  • 达梦数据库
  • Spring
  • SpringBoot
  • Mybatis
  • Shiro
  • 设计须知
  • UML画图
  • 权限校验
  • 设计模式
  • API网关
  • RPC
  • 消息队列
  • SpringCloud
  • 分布式事务
  • 云存储
  • 搜索引擎
  • 多媒体框架
  • 虚拟机
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • 随笔
  • 前端环境搭建
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 脚手架搭建
  • 瑞吉外卖
  • 黑马点评
  • vue-blog
  • 沉梦接口开放平台
  • 用户中心
  • 聚合搜索平台
  • 仿12306项目
  • 壁纸小程序项目
  • RuoYi-Vue
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
Github (opens new window)
  • 设计须知

  • UML画图

  • 权限校验

  • 设计模式

    • 设计模式基础入门
      • 七大原则
      • 设计模式的重要性
      • 设计模式在软件中哪里?
      • 三大类别
        • 🏗️ 一、创建型模式(Creational Patterns)
        • 🧱 二、结构型模式(Structural Patterns)
        • 🔄 三、行为型模式(Behavioral Patterns)
        • ✅ 总结
      • 企业开发中常用模式总结与选择
    • 设计模式七大原则
    • 单例模式
    • 工厂模式
    • 原型模式
    • 建造者模式
    • 适配器模式
    • 桥接模式
    • 装饰者模式
    • 外观模式
    • 模板方法模式
    • 常见设计模式总结
    • 设计模式 13 问
  • 系统设计
  • 设计模式
沉梦听雨
2024-09-10
目录

设计模式基础入门

# 设计模式基础入门

视频课程地址:001-尚硅谷-设计模式-bilibili (opens new window)

# 七大原则

  1. 单一职责原则
  2. 接口隔离原则
  3. 依赖倒转原则
  4. 里氏替换原则
  5. 开闭原则 ocp
  6. 迪米特法则(最少知道原则)
  7. 合成复用原则

# 设计模式的重要性

软件工程中,设计模式是对软件设计中**普遍存在(反复出现)**的各种问题,所提出的解决方案。

# 设计模式在软件中哪里?

面向对象 -> 功能模块【设计模式 + 算法(数据结构)】 -> 框架【使用到多种设计模式】 -> 架构【服务器集群】

# 三大类别

设计模式主要分为三大类:创建型模式(Creational Patterns)、结构型模式(Structural Patterns)、行为型模式(Behavioral Patterns),共23种经典设计模式。


# 🏗️ 一、创建型模式(Creational Patterns)

核心作用:处理对象的创建,封装复杂的实例化过程,降低对象创建的复杂性,提供更灵活的创建方式。

设计模式 目的 特点
单例模式 (Singleton) 确保一个类只有一个实例,并提供全局访问点 只有一个实例,节省资源,确保一致性
工厂方法模式 (Factory Method) 定义一个创建对象的接口,让子类决定实例化哪个类 延迟实例化,扩展性强,符合开闭原则
抽象工厂模式 (Abstract Factory) 提供创建一系列相关或依赖对象的接口,无需指定具体类 生成一组相关产品,保证产品一致性
建造者模式 (Builder) 分步创建复杂对象,允许自由组合各部分 复杂对象分解,简化对象的创建过程
原型模式 (Prototype) 通过克隆(复制)现有对象创建新对象 克隆对象,避免重复创建,效率高

✅ 应用场景:

  • 单例模式:数据库连接池、线程池、缓存。
  • 工厂模式:日志类、数据库驱动加载、解析器。
  • 抽象工厂模式:跨平台应用、UI 组件创建。
  • 建造者模式:复杂文档生成器、HTML 构建、SQL 语句拼接。
  • 原型模式:对象复制、场景重置、深拷贝与浅拷贝。

# 🧱 二、结构型模式(Structural Patterns)

核心作用:处理类与类、对象与对象之间的组合与依赖,简化系统结构,提升代码复用性和扩展性。

设计模式 目的 特点
适配器模式 (Adapter) 将不兼容的接口转换为可兼容的接口 兼容旧系统与新系统,扩展性强
桥接模式 (Bridge) 将抽象和实现解耦,二者可以独立变化 实现和抽象分离,降低耦合,扩展方便
装饰器模式 (Decorator) 动态为对象添加新的功能,无需修改其结构 透明扩展,灵活组合,遵循开闭原则
组合模式 (Composite) 使一组对象与单个对象使用方式相同,形成树形结构 统一处理复杂结构,适用于层级关系
外观模式 (Facade) 对外提供统一简化的接口,隐藏系统内部复杂性 简化客户端操作,降低系统复杂度
享元模式 (Flyweight) 共享对象,减少大量相似对象带来的内存消耗 节省内存,适合大量重复对象场景
代理模式 (Proxy) 为对象提供一个代理,控制对目标对象的访问 控制访问权限,延迟初始化,远程代理

✅ 应用场景:

  • 适配器模式:API 兼容、数据库兼容、类库适配。
  • 桥接模式:多维度变化的系统(如图形形状和颜色)。
  • 装饰器模式:动态增加日志、权限校验、数据加密。
  • 组合模式:文件系统、组织架构、菜单管理。
  • 外观模式:封装子系统,提供统一接口,如 Spring 容器。
  • 享元模式:缓存池、线程池、连接池、字符对象池。
  • 代理模式:权限控制、RPC 远程调用、AOP 切面。

# 🔄 三、行为型模式(Behavioral Patterns)

核心作用:关注对象之间的通信和职责分配,处理类或对象之间的交互方式,降低耦合度,提高扩展性。

设计模式 目的 特点
策略模式 (Strategy) 定义一系列算法,封装并使它们可以互换 算法独立,互不影响,符合开闭原则
模板方法模式 (Template Method) 定义算法骨架,延迟子类实现某些步骤 固定流程,子类实现差异化,代码复用
观察者模式 (Observer) 定义一种订阅机制,使对象间实现一对多的依赖通知 发布-订阅模型,事件驱动,解耦
迭代器模式 (Iterator) 提供一种方法顺序访问集合内部元素,而不暴露其内部结构 分离遍历逻辑,支持多种遍历方式
责任链模式 (Chain of Responsibility) 将请求沿着处理链传递,链上的每个对象可对请求进行处理或传递 动态处理请求,简化请求处理流程
命令模式 (Command) 将请求封装为对象,支持命令的参数化与撤销 解耦请求与执行,命令可记录与回滚
备忘录模式 (Memento) 保存对象的状态,允许恢复到先前状态 状态恢复,撤销操作,历史记录
状态模式 (State) 允许对象在内部状态变化时,改变其行为 行为与状态解耦,状态转换灵活
中介者模式 (Mediator) 通过中介者协调多个对象的通信,避免对象间直接依赖 降低复杂对象依赖,集中管理交互
解释器模式 (Interpreter) 定义语言语法规则,解析并执行语法表达式 自定义语言解析,适合DSL解析
访问者模式 (Visitor) 分离数据结构和操作,新增操作而不修改数据结构 数据与操作分离,扩展性强

✅ 应用场景:

  • 策略模式:支付方式、排序算法、验证码生成。
  • 模板方法模式:数据导入、网络爬虫、任务调度。
  • 观察者模式:消息通知、事件总线、发布订阅。
  • 迭代器模式:集合遍历、数据流处理、数据库游标。
  • 责任链模式:日志拦截、权限校验、审批流程。
  • 命令模式:事务操作、任务队列、日志记录。
  • 备忘录模式:撤销操作、游戏存档、历史记录。
  • 状态模式:订单状态、工作流、权限管理。
  • 中介者模式:聊天室、MVC模式、微服务通信。
  • 解释器模式:SQL解析、规则引擎、表达式求值。
  • 访问者模式:数据导出、代码生成、语法树遍历。

# ✅ 总结

  • 创建型模式 → 解决对象创建问题,简化实例化过程。
  • 结构型模式 → 解决类和对象之间的组合,增强灵活性。
  • 行为型模式 → 解决对象间的通信与职责分配,提升扩展性。

# 企业开发中常用模式总结与选择

类别 模式名称 核心目的 主要应用场景
创建型模式 单例模式 (Singleton) 保证唯一实例,节省资源 Spring Bean、数据库连接池、缓存客户端
创建型模式 工厂方法/抽象工厂 解耦复杂对象的创建 数据库操作、支付系统、多消息队列适配
结构型模式 代理模式 (Proxy) 扩展增强、不改变原有代码 Spring AOP、RPC 调用、权限控制
结构型模式 适配器模式 (Adapter) 兼容不同接口 支付接口、数据源切换、第三方 API 兼容
结构型模式 装饰器模式 (Decorator) 动态增强功能 I/O 流处理、缓存增强、数据源监控
结构型模式 外观模式 (Facade) 简化复杂系统的使用 订单处理、统一对外接口、微服务聚合
行为型模式 模板方法模式 固定算法骨架,灵活实现 数据导入导出、Spring JDBC Template
行为型模式 策略模式 (Strategy) 可切换的算法 订单状态、支付策略、数据校验
行为型模式 责任链模式 请求链式处理 权限校验、审批流、风控系统
行为型模式 观察者模式 (Observer) 事件驱动、自动通知 Spring 事件、消息推送、数据同步
行为型模式 命令模式 (Command) 封装请求,支持撤销与回滚 数据库事务、操作记录、异步任务
上次更新: 2025/3/14 17:32:11
SpringSecurity+OAuth2入门
设计模式七大原则

← SpringSecurity+OAuth2入门 设计模式七大原则→

Theme by Vdoing | Copyright © 2023-2025 沉梦听雨 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式