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的方法调用独立弃元析构元组和其他类型元组方法一方法二方法三方法四使用弃元元组的元素使用弃元的用户定义类型解构…...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
