23种设计模式概述

article/2025/8/14 12:08:50

设计模式共有23种,创建型模式5种,结构型模式7种,行为型模式11种,本章只做概念性说明。

(一) 创建型模式

01 工厂模式

定义:又叫做静态工厂方法,定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂模式使得一个类的实例化延迟到子类。
在这里插入图片描述

02 抽象工厂模式

定义:提供一个创建系列相关或相互依赖对象的接口,而无需指定他们具体的类。
在这里插入图片描述

03 原型模式

定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。
适用场景:相似对象,只是对象属性有差异,通过对象的深复制或浅复制构建新对象,直接应用;

在这里插入图片描述

04 单例模式

定义:保证一个类只有一个实例,并提供一个访问它的全局访问点。
在这里插入图片描述

05 建造者模式

定义:将一个复杂对象的构建与他的表示分离,使得同样的过程可以创建不同的表示。
在这里插入图片描述

(二)结构型模式

01 适配器模式

定义:将一个类的接口转换成客户希望的另外一个接口。该模式使得原本接口不兼容而不能一起工作的类可以一起工作。
在这里插入图片描述

02 桥接模式

定义:将抽象部分与他的实现分离,使得他们都可以独立的变化。
在这里插入图片描述

03 组合模式

定义:将对象组合成树形结构以表示“整体-部分”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。
在这里插入图片描述

04 装饰模式

定义:动态的给一个对象添加一些额外的职责。就增加功能来说,装饰模式比生成子类更加灵活。
在这里插入图片描述

05 外观模式

定义:为子系统种的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得子系统更加容易使用。
在这里插入图片描述

06 享元模式

定义:为运用共享技术有效地支持大量细粒度的对象。
在这里插入图片描述

07 代理模式

定义:为其他对象提供一种代理以控制对这个对象的访问。
在这里插入图片描述

(三)行为型模式

01 观察者模式

定义:定义对象间一种一对多的依赖关系,当一个对象的状态发生变化时,所有依赖于它的对象都得到通知并被自动更新。
场景案例:消息中心、订阅处理等。
在这里插入图片描述

02 模板方法模式

定义:定义一个操作算法骨架,而讲一些步骤延迟到子类种,模板方法使得子类可以不改变一个子算法的结构,而重定义该算法的某些特定步骤。
场景案例:算法设计,算法流程固定的。
在这里插入图片描述

03 命令模式

定义:将一个请求封装为一个对象,从而可以使你可用不同的请求对客户进行参数化;可以对请求排队或记录请求日志,以及支持可撤销的操作。
场景案例:饭店点餐系统
在这里插入图片描述

04 状态模式

定义:允许一个对象在其内部状态改变时改变它的行为,让对象看起来似乎修改了它的类。
场景案例:状态多分支。
在这里插入图片描述

05 职责链模式

定义:使多个对象都有机会处理请求,从而避免请求的发送者与接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
场景案例:简单流程,如审批、请销假、待办等。
在这里插入图片描述

06 解释器模式

定义:给定一个语言,定义他的文法的一种表示,并定义个解释器,这个解释器使用该表示来解释语句种的句子。
在这里插入图片描述

07 中介者模式

定义:用一个中介对象来封装一系列对象交互。中介者使得各对象不需要显示的相互交互,从而使其耦合松散,而且可以独立的改变他们之间的交互。
场景案例:房屋中介交易。
在这里插入图片描述

08 访问者模式

定义:表示一个作用于某对象结构种的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
在这里插入图片描述

09 策略模式

定义:定义一些列算法,把他们一个个封装起来,并且使他们可以相互替换。本模式使得算法可以独立于使用它的客户而变化。
在这里插入图片描述

10 备忘录模式

定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。
场景案例:游戏进度存档、文件保存回档等。
在这里插入图片描述

11 迭代器模式

定义:提供一种方法顺序访问一个聚合对象种的各个元素,而又不许暴露该对象的内部表示。
在这里插入图片描述


http://chatgpt.dhexx.cn/article/7AUy3pJY.shtml

相关文章

常用的几种设计模式详解

设计模式的概述 设计模式分类 创建型模式 特点是将对象的创建与使用分离(解耦),有 单例、原型、工厂方法、抽象工厂、建造者等5种。 结构型模式 用于描述如何将类或对象按某种布局组成更大的结构,代理、适配器、桥接、装饰、享元…

深度学习之对抗网络

一. 对抗网络的由来 对抗网络 是个新词,全名叫 生成式对抗网络(Generative adversarial nets),就像深度学习一样,发明时间并不长。 Ian Goodfellow(生成对抗性网络的发明者)定义了 对抗网络; Yann LeCun(三巨头之一)在Quora上直播时表示生成对抗性网络近期人工智能最…

[论文]鲁棒的对抗性强化学习

[论文]鲁棒的对抗性强化学习 摘要1.简介1.1RARL综述 2.背景2.1 MDPs中的标准强化学习2.2 两人零和折扣游戏 3.鲁棒的对抗式RL3.1 对抗智能体的鲁棒控制3.2 提出方法:RARL 结论 摘要 深度神经网络与快速模拟和改进的计算相结合,导致了最近在强化学习领域的成功。然而…

融合transformer和对抗学习的多变量时间序列异常检测算法TranAD论文和代码解读...

一、前言 今天的文章来自VLDB TranAD: Deep Transformer Networks for Anomaly Detection in Multivariate Time Series Data 论文链接:https://arxiv.org/pdf/2201.07284v6.pdf代码地址:https://github.com/imperial-qore/TranAD 二、问题 在文章中提出…

【深度学习】深入浅出对抗机器学习(AI攻防)

【深度学习】深入浅出对抗机器学习(AI攻防) 文章目录 1 Attack ML Model概述 2 基本概念 3 攻击分类 4 经典的对抗性样本生成算法 5 经典的对抗防御方法 6 人工智能安全现状概析1 Attack ML Model概述 随着AI时代机器学习模型在实际业务系统中愈发无处不在,模型的安全性也变…

基于噪声伪标签和对抗学习的医学图像分割标注高效学习

目录 背景: 面临问题: 解决方案: 一 没有图像标注对的学习 二 为训练图像生成伪标签 2.1 为训练图像生成伪标签 2.2 VAE-Based鉴别器 2.3 鉴别器引导的发生器信道校准 这里有不太理解 (未写完) 三 从嘈杂的伪标…

【论文推荐】了解《对抗学习》必看的6篇论文(附打包下载地址)

论文推荐 “SFFAI139期来自美国莱斯大学的傅泳淦推荐的文章主要关注于基础研究的对抗学习领域,你可以认真阅读讲者推荐的论文,来与讲者及同行线上交流哦。” 关注文章公众号 回复"SFFAI139"获取本主题精选论文 01 The Lottery Ticket Hypothes…

对抗机器学习——Universal adversarial perturbations

代码地址: https://github.com/LTS4/universal 核心思想: 本文提出一种 universal对抗扰动,universal是指同一个扰动加入到不同的图片中,能够使图片被分类模型误分类,而不管图片到底是什么。示意图: 形…

【强化学习】模仿学习:生成式对抗模仿学习

★★★ 本文源自AI Studio社区精品项目,【点击此处】查看更多精品内容 >>> 模仿学习– 生成式对抗模仿学习 1. 模仿学习 模仿学习(imitation learning)不是强化学习,而是强化学习的一种替代品。模仿学习与强化学习有相同…

最新综述:图像分类中的对抗机器学习

目录 1.引言 2.论文贡献 3.卷积神经网络简介 4.对抗样本和对抗攻击 4.1.1 对抗扰动范围 4.1.2 对抗扰动的可见性 4.1.3 对抗扰动的测量 4.2 对抗攻击的分类 4.2.1 攻击者的影响力 4.2.2 攻击者的知识 4.2.3 安全入侵 4.2.4 攻击的特异性 4.2.5 攻击方法 5.2 防御…

对抗学习DCGAN网络

文章目录 DCGAN教程1. 简介2. 生成对抗网络(Generative Adversarial Networks)2.1 什么是 GAN2.2 什么是 DCGAN 3. DCGAN实现过程3.1 输入3.2 数据3.3 实现3.3.1 权重初始化3.3.2 生成器3.3.3 判别器3.3.4 损失函数和优化器3.3.4 训练3.3.5 结果 DCGAN教…

NLP中的对抗学习VS对比学习-1

文章目录 1 对抗学习的目的是什么?2 embedding是什么?3 对抗训练4 常见的对抗训练方式4.1 FGM4.2 PGD4.3 FreeAT4.4 FreeLB5 对抗训练和constractive learning6 对比学习的history and achievement思维导图链接:https://www.processon.com/mindmap/64159f9ff502f062b5d616be…

深度学习对抗样本的防御方法

作者: 19届 lz 论文:《深度学习对抗样本的防御方法综述》 问题 2013年 ,Szegedy 等 人 [1]首先通过添加轻微扰动来干扰输入样本,使基于深度神经网络(Deep neural network, DNN)的图片识别系统输出攻击者想…

对抗机器学习模型

重磅推荐专栏: 《Transformers自然语言处理系列教程》 手把手带你深入实践Transformers,轻松构建属于自己的NLP智能应用! 1. Attack ML Model 随着AI时代机器学习模型在实际业务系统中愈发无处不在,模型的安全性也变得日渐重要。…

PyTorch 生成对抗网络 01.生成对抗网络

1. 简介 本教程通过一个例子来对 DCGANs 进行介绍。我们将会训练一个生成对抗网络(GAN)用于在展示了许多真正的名人的图片后产生新的名人。 这里的大部分代码来自pytorch/examples中的 dcgan 实现,本文档将对实现进行进行全面 的介绍&#x…

机器学习中火爆的对抗学习是什么,有哪些应用?

1、什么是对抗学习? 机器学习这一技术自出现之始就以优异的性能应用于各个领域。近年来,随着机器学习的快速发展与广泛应用,这一领域更是得到前所未有的蓬勃发展。 目前, 机器学习在计算机视觉、语音识别、自然语言处理等复杂任务中取得了公…

对抗学习概念、基本思想、方法综述

代码实现篇 对抗学习常见方法代码实现篇 对抗学习的基本概念 要认识对抗训练,首先要了解 “对抗样本”,在论文 Intriguing properties of neural networks 之中有关于对抗样本的阐述。简单来说,它是指对于人类来说 “看起来” 几乎一样&am…

【Python】MySQL数据库(安装MySQL、创建数据库、在Python中使用MySQL数据库)

MySQL是一个小巧的多用户、多线程SQL数据库服务器。MySQ是以客户机/服务器结构来实现的,它由一个服务器守护进程和客户程序组成。在Python中,可以使用pymysql模块连接到数据库,对MySQL数据库进行操作。 本文内容: 一、安装MySQL…

Python结合MySQL数据库编写简单信息管理系统

1,项目整体逻辑及使用工具 1.1 项目整体逻辑 本项目主要是使用Python进行编写,利用Python中的pymysql库进行连接数据库,将信息存入MySQL数据库中,然后实现对信息进行增删改查等一系列操作。 1.2 使用工具 (1&#…

十四、python学习之MySQL数据库(一):安装MySQL数据库

一、数据库概述: 1.数据库概述: 数据库是在数据管理和程序开发过程中,一种非常重要的数据管理软件,通过数据库,可以非常方便的对数据进行管理操作。 2.什么是数据: 数据用来描述事物的特征,…