Day48(补)【AI思考】-设计模式三大类型统一区分与记忆指南
文章目录
- 设计模式三大类型统一区分与记忆指南
- **一、创建型模式(对象如何生?)**
- **二、结构型模式(对象如何组?)**
- **三、行为型模式(对象如何动?)**
- **1. 行为型类模式(靠继承)**
- **2. 行为型对象模式(靠组合)**
- **四、统一对比表**
- **五、终极记忆技巧**
设计模式三大类型统一区分与记忆指南
让思想碎片重焕生机的灵魂:
行为模式分三类,每一类又有好多不同的模式,特别是行为式模式,还要区分成行为型类模式,和行为型对象模式,好难去记忆和理解,你想想办法帮帮我
这只是把行为型类模式和行为型对象模式区分了,其他两种结构型模式和创建型模式呢,并且最好你能统一在一起去进行区分和记忆,为了便于理解,最好都要有例子
设计模式三大类型统一区分与记忆指南
设计模式分为创建型、结构型、行为型三大类,每类的核心目标与典型模式不同。通过核心目的 + 典型场景 + 实例的对比,可以轻松区分记忆。
一、创建型模式(对象如何生?)
核心目标:解耦对象的创建过程,提供灵活、可复用的对象生成方式。
类比:工厂生产产品(如何造?谁来造?造什么样的?)。
| 模式 | 核心思想 | 典型场景 | 实例 |
|---|---|---|---|
| 工厂方法 | 子类决定创建哪种对象 | 需要扩展产品类型(如不同数据库连接) | DatabaseFactory.createConnection() |
| 抽象工厂 | 创建产品族(一组相关对象) | 跨平台UI组件(按钮+文本框成套生成) | GUIFactory.createButton() + createTextbox() |
| 建造者 | 分步骤构造复杂对象 | 配置多参数的复杂对象(如电脑组装) | ComputerBuilder.addCPU().addRAM().build() |
| 原型 | 克隆现有对象生成新对象 | 避免重复初始化(如游戏角色复制) | Enemy enemyClone = originalEnemy.clone() |
| 单例 | 确保全局唯一实例 | 数据库连接池、日志管理器 | Logger.getInstance().log("msg") |
二、结构型模式(对象如何组?)
核心目标:组合对象/类形成更大的结构,提升灵活性和可扩展性。
类比:搭积木(如何组装零件?如何适配接口?)。
| 模式 | 核心思想 | 典型场景 | 实例 |
|---|---|---|---|
| 适配器 | 转换接口使不兼容的类协同工作 | 旧系统接入新接口(如USB转Type-C) | LegacySystemAdapter(new System()).request() |
| 桥接 | 分离抽象与实现,独立变化 | 多维度扩展(如不同形状+颜色的图形) | Shape抽象类 + Color接口组合 |
| 组合 | 树形结构统一处理部分与整体 | 文件系统(文件夹+文件统一操作) | FileSystemNode.add(child) |
| 装饰器 | 动态添加职责(不修改原类) | 扩展功能(如带缓冲的输入流) | BufferedInputStream(new FileInputStream()) |
| 代理 | 控制对对象的访问(延迟加载/权限) | 图片懒加载、接口权限校验 | ImageProxy.loadRealImage() |
三、行为型模式(对象如何动?)
核心目标:管理对象间的协作与职责分配,提升交互灵活性。
类比:团队协作(谁负责什么?如何传递任务?)。
1. 行为型类模式(靠继承)
| 模式 | 核心思想 | 典型场景 | 实例 |
|---|---|---|---|
| 模板方法 | 父类定义算法骨架,子类填充细节 | 统一流程(如代码编译步骤) | AbstractClass.templateMethod() |
| 解释器 | 用类结构表示语法规则 | 解析特定领域语言(如SQL解析) | SQLInterpreter.parse("SELECT * FROM table") |
2. 行为型对象模式(靠组合)
| 模式 | 核心思想 | 典型场景 | 实例 |
|---|---|---|---|
| 策略 | 动态切换算法 | 支付方式切换(微信/支付宝) | PaymentContext.setStrategy(new WechatPay()) |
| 观察者 | 一对多的依赖通知机制 | 事件监听(如按钮点击通知) | Button.addClickListener(new Listener()) |
| 责任链 | 链式传递请求直到被处理 | 日志分级处理(如Error→Info) | LoggerChain.handleRequest(msg) |
| 命令 | 封装请求为对象 | 撤销/重做操作(如编辑器命令) | CommandManager.execute(new CopyCommand()) |
四、统一对比表
| 类型 | 核心问题 | 实现方式 | 典型模式 | 记忆口诀 |
|---|---|---|---|---|
| 创建型 | 对象如何创建? | 封装对象生成逻辑 | 工厂、单例、建造者 | “造物有方” |
| 结构型 | 对象如何组织? | 组合/适配对象结构 | 适配器、装饰器、代理 | “搭桥铺路” |
| 行为型类 | 行为如何通过继承实现? | 父类定义行为框架 | 模板方法、解释器 | “父定规矩子执行” |
| 行为型对象 | 行为如何通过组合实现? | 对象间动态协作 | 策略、观察者、责任链 | “团队协作拼积木” |
五、终极记忆技巧
- 创建型:想象造物主(工厂、建造者)在决定如何生成对象。
- 结构型:想象建筑师(适配器、桥接)在组装零件。
- 行为型类:想象家族族长(模板方法)在制定家规。
- 行为型对象:想象团队队长(责任链)在分配任务。
一句话总结:
创建型造物,结构型搭桥,行为型分活;
类模式靠继承,对象模式靠组合。
AI模型版本:
中国的深度求索(DeepSeek)公司开发的智能助手DeepSeek-V3
采用深度思考模式,深度思考模型版本为R1
没有打开联网搜索
对话编号:2
相关文章:
Day48(补)【AI思考】-设计模式三大类型统一区分与记忆指南
文章目录 设计模式三大类型统一区分与记忆指南**一、创建型模式(对象如何生?)****二、结构型模式(对象如何组?)****三、行为型模式(对象如何动?)****1. 行为型类模式&…...
公牛充电桩协议对接单车汽车平台交互协议外发版
充电设备与平台交互协议-外发版 V1.0.0.05 1 充电设备与平台交互协议 (外发版) 充电设备与平台交互协议-外发版 V1.0.0.05 2 版本 版本日期 修改人 版本说明 1.0.0.00 2022.05.05 研发部 外发初版 1.0.0.01 2022.08.26 研发部 0x32 增加鉴权参数 0x34 增…...
大语言模型内容安全的方式有哪些
大语言模型内容安全的方式有哪些 LLM(大语言模型)内容安全方式主要是通过技术手段对模型生成的内容进行检测、过滤和干预,以确保输出符合道德、法律和社会规范。以下是一些常见的方式方法及其原理和著名的应用案例: 基于规则的过滤 原理:制定一系列明确的规则和模式,例…...
【ISO 14229-1:2023 UDS诊断(ECU复位0x11服务)测试用例CAPL代码全解析⑩】
ISO 14229-1:2023 UDS诊断【ECU复位0x11服务】_TestCase10 作者:车端域控测试工程师 更新日期:2025年02月18日 关键词:UDS诊断协议、ECU复位服务、0x11服务、ISO 14229-1:2023 TC11-010测试用例 用例ID测试场景验证要点参考条款预期结果TC…...
Android WindowContainer窗口结构
Android窗口是根据显示屏幕来管理,每个显示屏幕的窗口层级分为37层,0-36层。每层可以放置多个窗口,上层窗口覆盖下面的。 要理解窗口的结构,需要学习下WindowContainer、RootWindowContainer、DisplayContent、TaskDisplayArea、T…...
从零到一实现微信小程序计划时钟:完整教程
在本教程中,我们将一起实现一个微信小程序——计划时钟。这个小程序的核心功能是帮助用户添加任务、设置任务的时间范围,并且能够删除和查看已添加的任务。通过以下步骤,我们将带你从零开始实现一个具有基本功能的微信小程序计划时钟。 项目…...
moveable 一个可实现前端海报编辑器的 js 库
目录 缘由-胡扯本文实验环境通用流程1.基础移动1.1 基础代码1.1.1 data-* 解释 1.2 操作元素创建1.3 css 修饰1.4 cdn 引入1.5 js 实现元素可移动1.6 图片拖拽2.缩放3.旋转4.裁剪 懒得改文案了,海报编辑器换方案了,如果后面用别的再更。 缘由-胡扯 导火…...
wangEditor 编辑器 Vue 2.0 + Nodejs 配置
资料 Vue2.0 版本的安装:https://www.wangeditor.com/v5/for-frame.html#%E4%BD%BF%E7%94%A8上传图片配置:https://www.wangeditor.com/v5/menu-config.html#%E4%B8%8A%E4%BC%A0%E5%9B%BE%E7%89%87 安装步骤 1.安装界面基础部分 <!-- 富文本编辑器…...
DeepSeek R1生成图片总结2(虽然本身是不能直接生成图片,但是可以想办法利用别的工具一起实现)
DeepSeek官网 目前阶段,DeepSeek R1是不能直接生成图片的,但可以通过优化文本后转换为SVG或HTML代码,再保存为图片。另外,Janus-Pro是DeepSeek的多模态模型,支持文生图,但需要本地部署或者使用第三方工具。…...
x86平台基于Qt+opengl优化ffmpeg软解码1080P视频渲染效率
一般的在arm嵌入式平台,大多数板子都要硬解码硬件渲染的框架,使用即可。 在x86下比较麻烦了。 优化的思路一共有以下几个方面, 1. 软解码变成硬解码 2. 将YUV转QImage的操作转移到GPU 3. QWidget渲染QImage变成opengGL渲染AVFrame 这三点…...
机器学习入门-读书摘要
先看了《深度学习入门:基于python的理论和实践》这本电子书,早上因为入迷还坐过站了。。 因为里面的反向传播和链式法则特别难懂,又网上搜了相关内容进行进一步理解,参考的以下文章(个人认为都讲的都非常好࿰…...
前端【技术方案】重构项目
1. 明确重构目标 优化性能 减少页面加载时间降低资源占用 提升代码可维护性 更规范的代码风格更清晰的代码结构更明确的模块设计 扩展功能 为项目添加新功能改进现有功能 2. 评估项目现状 审查代码 全面检查现有代码,找出代码中的问题,如代码冗余、耦合…...
大语言模型简史:从Transformer(2017)到DeepSeek-R1(2025)的进化之路
2025年初,中国推出了具有开创性且高性价比的「大型语言模型」(Large Language Model — LLM)DeepSeek-R1,引发了AI的巨大变革。本文回顾了LLM的发展历程,起点是2017年革命性的Transformer架构,该架构通过「…...
RabbitMQ服务异步通信
消息队列在使用过程中,面临着很多实际问题需要思考: 1. 消息可靠性 消息从发送,到消费者接收,会经理多个过程: 其中的每一步都可能导致消息丢失,常见的丢失原因包括: 发送时丢失: 生…...
Python常见面试题的详解7
1. 内置的数据结构有哪几种 Python 中有多种内置的数据结构,主要分为以下几种: 1.1 数值类型 整数(int):用于表示整数,没有大小限制。例如:1, -5, 100。浮点数(float)…...
Django REST Framework (DRF) 中用于构建 API 视图类解析
Django REST Framework (DRF) 提供了丰富的视图类,用于构建 API 视图。这些视图类可以分为以下几类: 1. 基础视图类 这些是 DRF 中最基础的视图类,通常用于实现自定义逻辑。 常用类 APIView: 最基本的视图类,所有其…...
Huatuo热更新--安装HybridCLR
1.自行安装unity编辑器 支持2019.4.x、2020.3.x、2021.3.x、2022.3.x 中任一版本。推荐安装2019.4.40、2020.3.26、2021.3.x、2022.3.x版本。 根据你打包的目标平台,安装过程中选择必要模块。如果打包Android或iOS,直接选择相应模块即可。如果你想打包…...
读书笔记 - 修改代码的艺术
读书笔记 - 修改代码的艺术 第 1 章 修改软件第 2 章 带着反馈工作系统变更方式反馈方式遗留代码修改方法 第 3 章 感知和分离伪协作程序模拟对象 第 4 章 接缝模型接缝 第 5 章 工具自动化重构工具单元测试用具 第 6 章 时间紧迫,但必须修改新生方法(Sp…...
【Go并发编程】Goroutine 调度器揭秘:从 GMP 模型到 Work Stealing 算法
每天一篇Go语言干货,从核心到百万并发实战,快来关注魔法小匠,一起探索Go语言的无限可能! 在 Go 语言中,Goroutine 是一种轻量级的并发执行单元,它使得并发编程变得简单高效。而 Goroutine 的高效调度机制是…...
c# -01新属性-模式匹配、弃元、析构元组和其他类型
文章目录 **学习摘抄分享**模式匹配概述Null 检查类型测试比较离散值关系模型多个输入ObServation列表模式弃元元组和对象析构利用switch的模式进行匹配对于out的方法调用独立弃元析构元组和其他类型元组方法一方法二方法三方法四使用弃元元组的元素使用弃元的用户定义类型解构…...
IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
算法:模拟
1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) 遍历字符串:通过外层循环逐一检查每个字符。遇到 ? 时处理: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: 与…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...
Web后端基础(基础知识)
BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端。 优点:维护方便缺点:体验一般 CS架构:Client/Server,客户端/服务器架构模式。需要单独…...
实战三:开发网页端界面完成黑白视频转为彩色视频
一、需求描述 设计一个简单的视频上色应用,用户可以通过网页界面上传黑白视频,系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观,不需要了解技术细节。 效果图 二、实现思路 总体思路: 用户通过Gradio界面上…...
CSS3相关知识点
CSS3相关知识点 CSS3私有前缀私有前缀私有前缀存在的意义常见浏览器的私有前缀 CSS3基本语法CSS3 新增长度单位CSS3 新增颜色设置方式CSS3 新增选择器CSS3 新增盒模型相关属性box-sizing 怪异盒模型resize调整盒子大小box-shadow 盒子阴影opacity 不透明度 CSS3 新增背景属性ba…...
