《设计模式:可复用面向对象软件的基础》是软件工程领域的经典著作,由四位顶尖专家(Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides,合称GoF)编写,首次系统化提出了23种设计模式,分为创建型、结构型和行为型三大类‌。

        该书被誉为面向对象设计的"圣经",其核心价值在于总结可复用的解决方案,帮助开发人员更好地组织代码,提升代码的可维护性、扩展性和团队协作效率。‌‌

        设计模式的诞生背景源于软件开发中面临的挑战,包括代码可维护性不佳、重用性不足、可读性差等问题。随着软件规模和复杂度的增加,传统的开发方式越来越难以应对这些挑战,因此设计模式应运而生。

        本文以不同的形式,对面向对象的23种开发设计模式进行展示,便于更好地分类理解。

1、表格形式

创建型模式(共5种)

结构型模式(共7种)

行为型模式(共11种)

类模式

工厂方法模式 Factory Method

适配器模式 Adapter

解析器模式 Interpreter

模板方法模式 Template Method

对像模式

抽象工厂模式 Abstract Factory

建造者模式 Builder

原型模式 Prototype

单例模式 Singleton

适配器模式 Adapter

桥接模式 Bridge

组合模式 Composite

装饰模式 Decorator

外观模式 Facade

享元模式 Flyweight

代理模式 Proxy

职责链模式 Chain of Responsibility

命令模式 Command

迭代器模式 Interator

中介者模式 Mediator

备忘录模式 Memento

观察者模式 Observer

状态模式 State

策略模式 Strategy

访问者模式 Visitor

2、思维导图-分类分组 

3、思维导图-关系链 

4、附件

  • 【书】设计模式:可复用面向对象软件的基础 - 道客巴巴
  • 【书】设计模式:可复用面向对象软件的基础 - CSDN博客
  • 设计模式详解:起源、原则、六大类与23种模式 - CSDN博客
  • 23种经典设计模式的原理、背后的思想、应用场景 - 知乎
  • 23种设计模式 - CSDN博客

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

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

相关文章

git新建一个分支到gitlab项目目录中

先向git确认身份 git config --global user.email "youexample.com"看一下当前在哪个分支上(没啥影响) git status lculation$ git status 位于分支 my_new_branch 您的分支与上游分支 origin/main 一致。 用origin/main分支来新建一个分支 …

云原生时代配置中心全景解读:从Spring Cloud Config到Nacos深度实践

摘要:在分布式系统和云原生架构中,配置管理已从简单的键值存储演进为核心基础设施组件。本文深入解析四大主流配置中心(Spring Cloud Config、Apollo、Nacos、Consul)的架构设计与实战应用,并分享生产环境下的最佳实践…

Vue3 defineModel 原理解析

1. 引言 在上一篇文章中探讨了v-model的实现原理🔗。本文将聚焦于Vue3.4版本新增的defineModel语法糖,它显著简化了组件中v-model的实现方式。我们将详细解析defineModel的工作原理,并与3.4版本之前实现组件v-model的方法进行对比。 2. Vue…

GRPO训练布局感知的强化学习多模态文档解析框架-Infinity-Parser

前期《文档智能》专栏详细中介绍了文档智能解析详细pipline链路技术方案,如下图: 现在来看一个新思路,指出pipline链路依赖大量标注数据、并且会出现错误传播问题,导致解析效果不佳,故提出一个基于布局强化学习&…

【超详细】讯飞智能车PC电脑烧录指南(高级系统部署与恢复)

本指南旨在详细指导您如何使用PC电脑上的瑞芯微开发工具,对讯飞智能车进行固件烧录、分区镜像烧写和设备擦除等高级操作。这些操作通常用于系统出现严重问题、需要全新部署固件或进行底层恢复时。 一、所需设备与工具 在开始操作之前,请确保您准备好以…

【亲测可用】html+css3+ajax+php文件夹拖放上传系统(保持文件结构上传)

文件夹拖放上传系统&#xff08;保持文件结构&#xff09; 下面是一个完整的HTML5CSS3AJAXPHP实现&#xff0c;支持拖放文件夹上传并保持原有文件结构的解决方案。 前端部分 (index.html) <!DOCTYPE html> <html lang"zh-CN"> <head><meta c…

什么是数据清洗?数据清洗有哪些步骤?

目录 一、数据清洗的定义和重要性 1. 数据清洗的定义 2. 数据清洗的重要性 二、数据清洗的前期准备 1. 明确清洗目标 2. 了解数据来源和背景 3. 制定清洗计划 三、数据清洗的具体步骤 1. 数据审计 2. 处理缺失值 3. 处理重复值 4. 处理异常值 5. 数据标准化 6. 数…

Vue3+TypeScript中v-bind()的原理与用法

在 Vue 3 的单文件组件&#xff08;SFC&#xff09;中&#xff0c;v-bind() 用于在 <style> 块中动态绑定 CSS 值到组件的响应式数据&#xff0c;实现了状态驱动样式的能力。下面详细讲解其原理和用法&#xff1a; 一、核心原理 CSS 变量注入 Vue 编译器会将 v-bind() 转…

2 geotools入门示例

1. 设置 Spring Boot 项目并集成 GeoTools 依赖 首先&#xff0c;你需要创建一个新的 Spring Boot 项目。你可以使用 Spring Initializr 来快速生成项目骨架。 选择以下依赖&#xff1a; Web: Spring Web (用于创建 REST API)Developer Tools: Spring Boot DevTools (可选&a…

深度解析String不可变性:从Java底层到设计哲学

一、String不可变性的直观理解 在Java中,String对象一旦创建,其内容就不可更改。任何看似"修改"String的操作,实际上都是创建了一个全新的String对象。这种设计是Java语言基础架构的重要部分,理解其底层原理对编写高效、安全的Java程序至关重要。 String str =…

C++并发编程-2.C++ 线程管控

参考&#xff1a;https://llfc.club/category?catid225RaiVNI8pFDD5L4m807g7ZwmF#!aid/2Tuk4RfvfBC788LlqnQrWiPiEGW 1. 简历 本节介绍C线程管控&#xff0c;包括移交线程的归属权&#xff0c;线程并发数量控制以及获取线程id等基本操作。 2. 线程归属权 比如下面&#xff…

Qt面试常问

1.QT信号与槽的底层原理&#xff1f; 底层通过元对象系统和事件循环完成的&#xff0c;能够在运行期间动态处理信号槽之间的连接与断开&#xff0c;而不是像函数调用那样在编译期间就完全确定了。元对象系统包含&#xff1a;QObject类、Q_OBJECT宏定义、moc编译器当发送一个信…

【git】错误

【成功解决】开代理 unable to access ‘https://github.com/laigeoffer/pmhub.git/’: Recv failure: Connection was reset

什么是状态机?状态机入门

状态机&#xff1a;优雅管理复杂逻辑的Python实践 在软件开发中&#xff0c;状态机&#xff08;Finite State Machine, FSM&#xff09; 是管理多状态转换的利器。它将行为分解为离散的状态、事件和转移规则&#xff0c;大幅提升代码的可读性与可维护性。本文通过Python示例解析…

【Python打卡Day41】简单CNN@浙大疏锦行

可以看到即使在深度神经网络情况下&#xff0c;准确率仍旧较差&#xff0c;这是因为特征没有被有效提取----真正重要的是特征的提取和加工过程。MLP把所有的像素全部展平了&#xff08;这是全局的信息&#xff09;&#xff0c;无法布置到局部的信息&#xff0c;所以引入了卷积神…

MySQL中InnoDB存储引擎底层原理与MySQL日志机制深入解析

MySQL的内部组件结构如下&#xff1a; 大体来说&#xff0c;MySQL 可以分为 Server 层和存储引擎层两部分。 Server层 主要包括连接器、查询缓存、分析器、优化器、执行器等&#xff0c;涵盖 MySQL 的大多数核心服务功能&#xff0c;以及所有的内置函数&#xff08;如日期、…

MCP基本概念

基本概念 现在大模型交互的热门形式&#xff1a; 第一、Agent与Tools(工具)的交互Agent需要调用外部工具和APl、访问数据库、执行代码等。> MCP 第二、Agent与Agent(其他智能体或用户)的交互Agent需要理解其他Agent的意图、协同完成任务、与用户进行自然的对话。 > A2A…

Docker容器相关命令介绍和示例

Docker 容器是镜像的运行实例。以下是常用的 Docker 容器命令及其示例&#xff1a; 1. 运行容器 docker run [选项] <镜像名> [命令]常用选项&#xff1a; -d&#xff1a;后台运行&#xff08;守护模式&#xff09;-it&#xff1a;交互式终端--name&#xff1a;指定容…

【Akshare】高效下载股票和ETF数据

在量化投资与金融数据分析的世界里&#xff0c;获取高质量的市场数据是构建有效策略的关键。Python库Akshare为我们提供了一个强大且易于使用的接口&#xff0c;可以轻松地从网络上抓取各类金融数据。本文将详细介绍如何利用Akshare下载股票和ETF的历史行情数据。 安装Akshare…

分布式--3--分布式事务

1 简介 事务在单系统中的表现&#xff1a;多次数据库操作用事务进行管理&#xff0c;来保证ACID原则。 但是如果各个模块都是单独独立出来的微服务&#xff0c;进行了分布式部署&#xff0c;单系统里的事务将不能保证各个数据库操作的一致性&#xff0c;因此就需要分布式事务来…