23种设计模式速记法

在这里插入图片描述

前言

在软件开发的过程中,设计模式作为解决常见问题的通用模板,一直是开发者的重要工具。尤其是在面临复杂系统架构和需求变化时,设计模式不仅能够提升代码的可复用性和扩展性,还能大大提高团队之间的协作效率。然而,对于许多开发者来说,掌握所有设计模式的细节往往需要投入大量的时间和精力。本文将介绍23种设计模式的速记方法:

一、创建型

这类模式关注如何创建对象,减少直接创建对象的复杂性。

速记口诀:抽工单建原

抽象工厂、工厂方法、单例模式、建造者模式、原型模式

记忆技巧

  1. 单例模式 (Singleton)

记忆技巧:单个实例,"Sing"歌手的舞台只有一个人。

  1. 工厂方法模式 (Factory Method)

记忆技巧:就像工厂生产产品一样,你通过一个工厂方法来创建对象。

  1. 抽象工厂模式 (Abstract Factory)

记忆技巧:这不仅仅是一个工厂,而是可以生产不同产品的工厂(多个工厂实例)。

  1. 建造者模式 (Builder)

记忆技巧:建造一个复杂对象,就像建造一个大楼,需要一个专业的建造者。

  1. 原型模式 (Prototype)

记忆技巧:通过复制现有对象来创建新的对象,像是“原型”复制品。

二、结构型

这些模式关注如何将类和对象组合成更大的结构。

速记口诀:桥代理组装适配器,享元回家装饰外观

桥接模式、代理模式、组合模式、适配器模式、享元模式、装饰器模式、外观模式

记忆技巧

  1. 适配器模式 (Adapter)

记忆技巧:就像插头转换器,适配器模式使不同系统之间可以“适配”工作。

  1. 桥接模式 (Bridge)

记忆技巧:桥接模式通过提供一个“桥”来解耦接口和实现,像搭建一座桥梁。

  1. 组合模式 (Composite)

记忆技巧:就像树的分支一样,组合模式使得你可以把多个对象组合成一个整体。

  1. 装饰者模式 (Decorator)

记忆技巧:装饰者可以动态地给对象增加功能,像给礼物加上漂亮的包装。

  1. 外观模式 (Facade)

记忆技巧:外观模式提供了一个统一的接口,就像建筑物的正面“外观”对外界提供了简洁的视图。

  1. 享元模式 (Flyweight)

记忆技巧:享元模式通过共享对象来节省内存,就像我们分享相同的模板。

  1. 代理模式 (Proxy)

记忆技巧:代理模式就像代理人一样,代表其他对象处理任务。

三、行为型

这些模式关注对象和类之间的交互。

速记口诀:访问者写好策略备忘录,观察模板迭代的状态,命令中介解释责任链

访问者模式、策略模式、备忘录模式、观察者模式、模板模式、迭代模式、状态模式、命令模式、解释器模式、责任链模式

  1. 责任链模式 (Chain of Responsibility)

记忆技巧:像接力赛一样,责任链模式传递任务给链条中的下一个处理者。

  1. 命令模式 (Command)

记忆技巧:命令模式就像一个遥控器,通过发送命令控制对象行为。

  1. 解释器模式 (Interpreter)

记忆技巧:解释器模式类似于翻译员,能够将一种语言转换成另一种语言。

  1. 迭代器模式 (Iterator)

记忆技巧:迭代器模式就像遍历一组对象的“工具”或“地图”。

  1. 中介者模式 (Mediator)

记忆技巧:中介者模式充当调解员,协调不同对象之间的交互。

  1. 备忘录模式 (Memento)

记忆技巧:备忘录模式类似于保存快照,你可以恢复对象的先前状态。

  1. 观察者模式 (Observer)

记忆技巧:观察者模式就像一个新闻广播,所有注册的观察者都会收到更新。

  1. 状态模式 (State)

记忆技巧:状态模式就像切换档位,基于不同状态来改变对象的行为。

  1. 策略模式 (Strategy)
    记忆技巧:策略模式就像一套不同的战术,可以根据情况选择不同策略。

  2. 模板方法模式 (Template Method)
    记忆技巧:模板方法模式就像烹饪食谱,固定的步骤可以由不同的子类实现。

  3. 问者模式 (Visitor)
    记忆技巧:访问者模式就像一个检查员,访问对象的不同部分并执行操作。

参考内容

  • 图说设计模式
  • 大话设计模式

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

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

相关文章

IntelliJ+SpringBoot项目实战(十二)--设计项目多模块依赖关系和跨模块调用服务和接口

在非微服务的项目中,一个应用里有多个子系统,例如在一个电商系中,有系统管理子系统、内容管理子系统和电商管理子系统,我们想实现这样的效果: (1)只需要启动一个SpringBoot应用,不需…

MACOS开发、使用常见问题汇总

MACOS常见问题 本文记录使用macos遇到的常见问题,后面会持续更新,觉得有用的可以收藏一下。 打不开xxx.app,因为它来自身份不明的开发者解决方法(开启任何来源) 打开终端(Terminal)程序 拷贝sudo spctl --master-di…

【实用数据】上市公司数字化转型双重差分准自然实验数据(2007-2022年)

测算方式: 参考《管理评论》丁相安(2024)老师研究的做法,企业分批逐步推动自身数字化转型是一个很好的准自然实验,这符合双重差分法的使用情境。 因此,本文使用多时点双重差分模型(&#xff24…

PostgreSQL常用字符串函数与示例说明

文章目录 coalesce字符串位置(position strpos)字符串长度与大小写转换去掉空格(trim ltrim rtrim)字符串连接(concat)字符串替换简单替换(replace)替换指定位置长度(overlay)正则替换(regexp_replace) 字符串匹配字符串拆分split_part(拆分数组取指定位置的值)string_to_array…

一次需升级系统的wxpython安装(macOS M1)

WARNING: The scripts libdoc, rebot and robot are installed in /Users/用户名/Library/Python/3.8/bin which is not on PATH. 背景:想在macos安装Robot Framework ,显示pip3不是最新,更新pip3后显示不在PATH上 参看博主文章末尾 MAC系统…

细说STM32单片机DMA中断收发RTC实时时间并改善其鲁棒性的另一种方法

目录 一、工程配置 二、软件代码 1、软件代码 2、usart.h 3、usart.c 4、rtc.c 三、运行与调试 1、合规的指令 2、proBuffer[0]不是 ‘#’ 或proBuffer[4]不是 ‘;’ 3、指令长度小于5 4、proBuffer[2]或proBuffer[3]至少一个不是数字 5、; 位于proBuffer…

离散数学---概率, 期望

本文根据 MIT 计算机科学离散数学课程整理(Lecture 22 ~ Lecture 24)。 1 非负整数期望性质 用 N 表示非负整数集合,R 是 N 上的随机变量,则 R 的期望可以表示成: 证明: 换一个形式,把每一列…

AI一键生成原创花卉印花图案——创新与效率的结合

引言 在时尚界,印花图案一直是设计师们表达创意和个性的重要手段。随着人工智能技术的发展,AI在设计领域的应用越来越广泛,其中就包括了一键生成原创花卉印花图案。本文将探讨AI如何帮助设计师们提高效率,同时保持设计的创新性和…

QT实操中遇到的一些(C++)疑惑点汇总

QT实操中 遇到的一些C疑惑点汇总 1.实例化对象的两种方法及其访问方式 1.1 示例 1.2 总结 2.基类成员的访问 2.1 直接访问继承的基类成员 2.1.1示例代码 2.1.2 输出结果 2.2 使用作用域解析符来显式调用基类成员函数 2.2.1 示例代码 2.2.2 输出结果 2.3 使用 this 指针访问基类…

图形学笔记 - 4. 几何 -网格操作和阴影映射

文章目录 网格操作:几何处理细分Loop细分Catmull-Clark细分(一般网格)网格简化 阴影 Shadows可视化阴影映射阴影映射阴影贴图的问题 网格操作:几何处理 网格细分网格简化网格正则化 网格细分(上采样) 网…

OBOO鸥柏车载广告屏:28.6寸液晶一体机的技术革新与应用前景

在数字化迅速发展的今天,OBOO鸥柏推出的28.6寸车载长条形液晶广告屏一体机成为了市场的一大亮点。这款产品不仅具有超窄边框的高亮设计,还利用异形激光切割技术,支持多种形状如圆形、方形及三角形展示,极大地提升了商用和工业屏幕…

Spring Cloud Alibaba、Spring Cloud 与 Spring Boot各版本的对应关系

参考spring-cloud-alibaba github wiki说明:版本说明 下面截取说明: 2022.x 分支 2021.x 分支 2.2.x 分支 组件版本关系

Springboot + vue 健身房管理系统项目部署

1、前言 ​ 许多人在拿到 Spring Boot 项目的源码后,不知道如何运行。我以 Spring Boot Vue 健身房管理系统的部署为例,详细介绍一下部署流程。大多数 Spring Boot 项目都可以通过这种方式部署,希望能帮助到大家。 ​ 2、项目查看 ​ 首…

SOL链上的 Meme 生态发展:从文化到创新的融合#dapp开发#

一、引言 随着区块链技术的不断发展,Meme 文化在去中心化领域逐渐崭露头角。从 Dogecoin 到 Shiba Inu,再到更多细分的 Meme 项目,这类基于网络文化的加密货币因其幽默和社区驱动力吸引了广泛关注。作为近年来备受瞩目的区块链平台之一&…

基于大数据爬虫数据挖掘技术+Python的网络用户购物行为分析与可视化平台(源码+论文+PPT+部署文档教程等)

#1024程序员节|征文# 博主介绍:CSDN毕设辅导第一人、全网粉丝50W,csdn特邀作者、博客专家、腾讯云社区合作讲师、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老…

主机管理工具 WGCLOUD v3.5.6 更新了哪些特性

WGCLOUD-v3.5.6 更新说明,2024-11-20发布 1. 新增,个性化采集,查看 2. 新增,支持达梦数据库做数据源来存贮监控数据,查看说明(8) 3. 新增,日志监控支持配置自动处理指令,当发现日志出现告警关键…

设计模式之 享元模式

享元模式(Flyweight Pattern)是一种结构型设计模式,用于减少系统中对象的数量,从而节省内存和提升性能。它通过共享相同的对象来避免重复创建类似的对象。该模式尤其适用于对象数量庞大、且重复内容较多的场景。 核心思想&#x…

yolov5 数据集分享:纯干货

数据集分享:纯干货 1. 遇见数据集:这是一个国内的数据集搜索引擎,索引了国内外的大部分网站,提供最新的数据集推荐。[遇见数据集网站](https://www.selectdataset.com/) 2. Kaggle:一个领先的数据科学和机器学习爱好者…

如何实现3D模型在线展示、互动和分享?

实现3D模型在线展示、互动和分享,可以通过多种途径和技术手段来完成。以下是一些具体的方法和步骤: 一、选择适合的3D模型展示平台 首先,你需要选择一个支持3D模型在线展示、互动和分享的平台。这些平台通常提供用户友好的界面和工具&#x…

大数据-227 离线数仓 - Flume 自定义拦截器(续接上节) 采集启动日志和事件日志

点一下关注吧!!!非常感谢!!持续更新!!! Java篇开始了! 目前开始更新 MyBatis,一起深入浅出! 目前已经更新到了: Hadoop&#xff0…