贯穿设计模式-中介模式+模版模式

样例代码

涉及到的项目样例代码均可以从https://github.com/WeiXiao-Hyy/Design-Patterns.git获取

需求

  1. 购买商品时会存在着朋友代付的场景,可以抽象为购买者,支付者和中介者之间的关系 -> 中介者模式
  2. 下单,支付,发货,收货等等操作需要进行日志审计。审计拥有一套标准的流程同时也允许用户有个性化的元素存在 -> 模版模式

中介者模式

中介者模式可以通过中介者来封装一系列的对象交互,将对象间复杂的关系网状结构变成结构简单的以中介者为核心的星形结构,从而简化对象间的关系。在这里插入图片描述
Mediator:代表着中介者
Colleague:代表着同事类(本例为购买者和支付者)
其中Colleague的所有操作都是对中介者的操作,所以有Colleague指向Mediator的箭头;
当然ConcreteMediator也持有了ConcreteColleagueA(购买者)和ConcreteColleagueB(支付者)的引用。

模版模式

该设计模式是比较常用的设计模式,比如Spring源码中的refresh方法里面的onRefresh方法就是模版方法。在这里插入图片描述
主要是AbstractClass对模版方法进行定义,ConcreteClass1-n是子类实现父类特有的方法。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

正则表达式Regex

是什么:一句话,正则表达式是对字符串执行模式匹配的技术。 从一段字符串中提取出所有英文单词、数字、字母和数字。 如果采用传统方法:将字符串的所有字符分割成单个,根据ASCII码判断,在一定范围内就是字母&#xff…

C++指针详解

定义: 指针是一个整数,一种存储内存地址的数字 内存就像一条线性的线,在这条街上的每一个房子都有一个号码和地址类似比喻成电脑,这条街上每一个房子的地址 是一个字节我们需要能够准确找到这些地址的方法,用来读写操…

中小型家具制造业使用制造管理MES系统应该注意什么?

随着人们生活水平变高,人们对家具的要求也在提高。为了应对越来越高的要求,企业开始寻找更有效的方法,其中就包括mes系统,那么中小型家具企业在使用mes的过程中应该注意什么呢? 第一,要考虑选择什么样的mes…

kubernetes Service 详解

写在前面:如有问题,以你为准, 目前24年应届生,各位大佬轻喷,部分资料与图片来自网络 内容较长,页面右上角目录方便跳转 Service 介绍 架构 在kubernetes中,Pod是应用程序的载体,…

【Azure 架构师学习笔记】- Azure Databricks (5) - Unity Catalog 简介

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (4) - 使用Azure Key Vault 管理ADB Secret 前言 DataBricks Unity Catalog(UC)是一个统一的对数据资产治理的解决方案…

[蓝桥杯学习] 树状数组的二分

要解决这个问题,插入和删除可以用STL实现,2操作如果用树状数组实现的话,将数的值作为树状数组的下标,即值域。 树状数组有两种操作,一个是更新某点的值,另一个是求区间和。 mid (lr)/2 ,求和 …

Vmware安装Windows11系统及下载MySQL步骤(超详细)

一、创建虚拟机 ①选择自定义 ②直接点击下一步 ③选择Windows 11 x64 ④命名虚拟机以及选择路径 ⑤新版本的虚拟机需要加密(密码需要8个字符以上) ⑥选择UEFI ⑦处理器配置(根据自己的需求) ⑧设置虚拟机的内存 ⑨选择不使用网络…

1878_emacs company backend的选择尝试

Grey 全部学习内容汇总: GitHub - GreyZhang/editors_skills: Summary for some common editor skills I used. 1872_emacs company backend的选择尝试 从C语言开发的使用场景角度,通过测试尝试看看这个company的backend应该来如何配置。 主题由来介…

静态电压继电器 JY-11A 辅助电压110VDC 额定电压100VAC 安装方式 板前接线

JY-10系列集成电路电压继电器 JY-11A集成电路电压继电器 JY-12A集成电路电压继电器 JY-11C集成电路电压继电器 JY-11D集成电路电压继电器 JY-12B集成电路电压继电器 JY-12C集成电路电压继电器 JY-12D集成电路电压继电器 1概述 JY系列集成电路电压继电器用于发电机、变…

计算机网络 —— 物理层

物理层 2.1 物理层的基本概念 物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流。 物理层为数据链路层屏蔽了各种传输媒体的差异,使数据链路层只需要考虑如何完成本层的协议和服务,而不必考虑网络具体的传输媒体是什么 2.2 物理层下…

喝羊奶的好处,羊奶与健康的秘密揭示

喝羊奶的好处,羊奶与健康的秘密揭示 相信大家都听说过喝牛奶的好处,但是你听说过喝羊奶的好处吗?羊奶是一种营养丰富、味道醇香的乳制品,它不仅滋补身体,还具有许多独特的健康功效。今天,就让小编羊大师带…

MySQL基础笔记(4)DQL数据查询语句

DQL用于查找数据库中存放的记录~ 目录 一.语法 二.基础查询 1.查询多个字段 2.设置别名 3.去除重复记录 三.条件查询 1.基础语法 2.常见条件 四.分组查询 1.聚合函数 2.语法 五.排序查询 六.分页查询 附注:DQL执行顺序 1.编写顺序 2.执行顺序 ​​​…

[足式机器人]Part2 Dr. CAN学习笔记-动态系统建模与分析 Ch02-8 Bode Plot伯德图

本文仅供学习使用 本文参考: B站:DR_CAN Dr. CAN学习笔记-动态系统建模与分析 Ch02-8 Bode Plot伯德图 Bode Plot 手绘技巧与应用

前端实现截图并下载

原理: 使用一个名为html2canvas的JavaScript库。这个库允许你将当前的HTML内容渲染到一个canvas元素上,然后将其转换为图像并进行下载。 你需要在项目中引入html2canvas库。你可以从官方网站(https://html2canvas.hertzen.com/)下载&#xf…

交通能见度监测站是什么

TH-NJD10交通能见度监测站是一种用于监测道路交通能见度的设备。它能实时监测道路上的能见度值,为驾驶员提供实时的路况信息,帮助他们在恶劣天气条件下安全驾驶。 交通能见度监测站通常由传感器、数据采集器和传输设备组成。传感器负责测量道路上的能见度…

K8S中SC、PV、PVC的理解

存储类(StorageClass)定义了持久卷声明(PersistentVolumeClaim)所需的属性和行为,而持久卷(PersistentVolume)是实际的存储资源,持久卷声明(PersistentVolumeClaim&#…

ISPM 十四五规划

指导思想 坚定不移贯彻创新、协调、绿色、开放、共享的新发展理念,坚持稳中求进工作总基调 2035展望 展望2035年,基本实现新型工业化、信息化、城镇化、农业现代化,建成现代化经济体系。 重大科技基础设施 深入实施制造强国战略 相关关键…

Gartner发布2024年SASE融合战略路线图

向云计算和远程工作的转变增加了 SASE 需求,以实现从任何设备的安全访问。安全和风险管理领导者必须将网络和安全融合到一两个明确合作的 SASE 供应商产品中,并淘汰遗留的边界系统。 主要发现 安全访问服务边缘 (SASE) 框架为混合劳动力以及设备、分支机…

2023年生成式AI全球使用报告

生成式人工智能工具正在迅速改变多个领域,从营销和新闻到教育和艺术。 这些工具使用算法从大量培训材料中获取新的文本、音频或图像。虽然 ChatGPT 和 Midjourney 之类的工具可以用来实现超出人类能力或想象力的艺术效果,但目前它们最常用于比人类更轻松…