设计模式 -- 命令模式

news/2024/5/20 15:48:09/文章来源:https://blog.csdn.net/w5_Silence/article/details/130242738

前言

月是一轮明镜,晶莹剔透,代表着一张白纸(啥也不懂)

央是一片海洋,海乃百川,代表着一块海绵(吸纳万物)

泽是一柄利剑,千锤百炼,代表着千百锤炼(输入输出)

月央泽,学习的一种过程,从白纸->吸收各种知识->不断输入输出变成自己的内容

希望大家一起坚持这个过程,也同样希望大家最终都能从零到零,把知识从薄变厚,再由厚变薄!

一、什么是命令模式?

        命令模式是一种行为设计模式,它允许将请求封装为一个对象,从而使不同的请求可以被参数化、队列化、记录日志、撤销等操作。该模式的核心是将请求的发起者和执行者解耦,以便更好地管理和扩展系统

二、命令模式的优缺点:

优点:

  1. 解耦:命令模式可以将请求者和接收者解耦,请求者不需要知道接收者的具体实现,只需要知道命令即可。

  2. 可扩展性:可以很容易地添加新的命令,只需要添加一个新的命令类即可。

  3. 可撤销:命令模式可以实现撤销和重做操作,可以很方便地回滚操作。

  4. 可记录:命令模式可以记录操作日志,方便后续分析和处理。

  5. 安全性:命令模式可以提高系统的安全性,因为可以限制命令的权限。

  6. 灵活性:命令模式可以根据需求灵活地组合命令,实现复杂的操作

缺点:

  1. 代码多余:实现命令模式需要创建多个类,这可能会导致代码过于冗长。

  2. 额外的内存开销:每个命令对象都需要额外的内存开销,这可能会导致系统的性能下降。

  3. 可能会导致系统复杂性增加:实现命令模式需要创建多个类,这可能会导致系统变得更加复杂。

  4. 可能会导致系统响应时间增加:由于命令模式需要创建多个对象,这可能会导致系统响应时间变慢。

  5. 可能会导致代码难以理解:由于命令模式需要创建多个类和对象,这可能会导致代码难以理解和维护。

三、命令模式的结构:

 

 

 Command(manager):定义命令接口,生命执行的方法

ConcreteCommand(ManageForAdd或者ManageForDelete):命令接口实现对象

Receiver(Product,Front,Back)

invoker:接受命令并执行

四、命令模式实战:

        以上图为示例,现在有甲方要求做出一个功能,而甲方需要找到项目对接人,不想事无巨细的去与每个组进行沟通,具体命令就有项目经理去下达一项项命令,指挥对应的组去完成

1.创建项目组(Product.Front,Back以及公共接口):

 

 

 2.创建命令类及其抽象类

 

 

 

 3.创建Invoker

 4.测试

 5.测试结果:

 

五.总结:

命令模式适用于以下场景:

  1. 需要将请求发送给多个对象,但是不知道具体接收者是谁。

  2. 需要将请求排队或者记录请求日志。

  3. 需要实现可撤销操作。

  4. 需要实现事务性操作。

  5. 需要实现回滚操作。

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

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

相关文章

【Redis】Redis十大数据类型—列表List

介绍 List列表是简单的字符串列表,按照插入顺序排序,可以从头部或尾部向List列表添加元素。 列表的最大长度是2^32-1,也就是每个列表支持超过40亿个元素。 实现 底层数据结构是由双向链表或压缩列表实现。 如果列表的元素个数小于 512 个…

YOLOv7如何提高目标检测的速度和精度,基于模型结构提高目标检测速度

目录 一、目标检测二、目标检测的速度和精度的权衡1、速度和精度的概念和定义2、如何评估目标检测算法的速度和精度3、速度和精度之间的权衡 三、基于模型结构提高目标检测速度1、Backbone网络的选择2、特征金字塔网络的设计3、通道注意力机制4、混合精度训练 一、目标检测 目…

3个实用的文字转语音方法,让你时刻保持信息更新!

现在,我们生活节奏加快,信息量也越来越大,有时候想了解新闻却又不想眼睛再去盯着手机屏幕了,这时候文字转语音工具就可以帮助我们实现听新闻的需求。如果你还不了解文字如何转换成语音,别担心,今天我将向大…

不同的场景上线时钟同步系统需要注意些什么

时钟同步系统一般都是用在学校或者医院的环境当中,一般时钟同步系统由硬件和软件相组成。对于局域网部署,通常使用NTP协议。对于广域网部署,通常需要考虑网络延迟和安全性等因素。此外,时钟同步系统在不同的使用场景当中的需求也不…

15天学习MySQL计划-多表联查(基础篇)第四天

15天学习MySQL计划(多表联查)第四天 1.多表查询 1.1概述 ​ 指从多张表中查询数据 ​ 在项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互…

记录-JavaScript常规加密技术

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 当今Web开发中,数据安全是一个至关重要的问题,为了确保数据的安全性,我们需要使用加密技术。JavaScript作为一种客户端编程语言,可以很好地为数据进行加…

sggJava基础第四天

1 分支结构 分支结构 根据条件,选择性地执行某段代码。 有if…else和switch-case两种分支语句。 概述 顺序结构的程序虽然能解决计算、输出等问题 但不能做判断再选择。对于要先做判断再选择的问题就要使用分支结构 if…else形式 单分支结构 代码实现 …

JWT 实现登录认证 + Token 自动续期方案

前言 过去这段时间主要负责了项目中的用户管理模块,用户管理模块会涉及到加密及认证流程。今天就来讲讲认证功能的技术选型及实现。技术上没啥难度当然也没啥挑战,但是对一个原先没写过认证功能的菜鸡来说也是一种锻炼吧。 技术选型 要实现认证功能&a…

JavaScript(JS)-1.JS基础知识

1.JavaScript概念 (1)JavaScript是一门跨平台,面向对象的脚本语言,来控制网页行为的,它能使网页可交互 (2)W3C标准:网页主要由三部分组成 ①结构:HTML负责网页的基本结构(页面元素和内容)。 …

Git从远程仓库克隆仓库后推送到指定分支

git克隆到本地仓库 在得到一个git仓库地址后,首先要配置本地仓库,配置远程仓库地址才可以远程拉取项目。 本地配置的一般流程: git init初始化一个空白git仓库 2. 配置在自己额用户名和邮箱 配置个人信息时方便再团队合作时能知道是谁再何…

适应大、中、小型医院的手术麻醉临床信息管理系统源码

手术麻醉管理系统是一款专门用于医院手术麻醉管理的软件系统,它可以帮助医院和医生更好地管理手术麻醉过程,提高手术麻醉的质量和安全性。本文将介绍手术麻醉管理系统的实现、功能概述、主要功能、系统设置、麻醉管理、术中记录、苏醒室记录、PCA实施及管…

番外12:ADS导出到AD变为PCB文件

番外12:ADS导出到AD变为PCB文件并嘉立创制板 番外12:ADS导出到AD变为PCB文件,此处的示例为功率放大器! STEP 1: 从ADS导出dxf文件 打开制作好的版图文件,在原有基础上打好散热孔和固定孔,散热孔半径0.63…

基于禅道二开领导报表

上周开会的时候公司项目总监说感觉最近开发人员很轻松,工作量不饱和。支付力度不够。 做为开发负责人,对项目总监这个说法我肯定需要给予响应,不然老板也在场,后续项目想要加资源啥的都无法解释。 关注我的人知道,之前…

简单介绍十几款常用的画架构图流程图的软件

简单介绍十几款常用的画架构图流程图的软件 draw.io draw.io是开源免费的在线画图工具,还提供桌面版本。 特性: 实时协作;支持在线离线版本;存储支持多种方式:Google Drive, OneDrive, GitHub, GitLab, Dropbox等&…

StarRC的妙用

在整个R2G的流程里边,寄生参数抽取(StarRC)是比较没有存在感的。大部分的时间,工程师们只是用这个工具来刷SPEF。并不会关注太多。这本身其实是一个好事情,反向证明了参数抽取工具的高度稳定性! 但是&#…

Android 对View 进行旋转、缩放、平移的属性变换后,获取外矩形顶点

文章目录 前言改变 View 的属性,进行旋转、缩放、平移输出 View 的属性 使用 matrix 映射 view 变换后的外矩形前(左)乘(preXxx)、后(右)乘(postXxx) 对映射结果的影响前(左)乘(preXxx) 的意义后(右)乘(postXxx) 结论 来张图 前言 Android View 通过平移、旋转、…

为什么APP也需要SSL证书?

通常我们会想到对网站使用SSL证书,来加密数据传输过程,确保信息不被篡改、泄露。对APP这类应用程序则选择软件签名证书,来进行数字签名和防止代码被恶意篡改。然而APP很容易获取到个人敏感信息,为了防止这些信息在传输过程中被有心…

Android ProtoLog动态开启相关wm logging源码分析补充

Android ProtoLog动态开启相关wm logging源码分析补充 针对上一节已经清楚了相关的代码中怎么可以打印到logcat中,其实本质上还就是protologtool这个工具对代码中的所有ProtoLog进行了相关的替换成了具体实现,最后会条件判断输出到Slog中 本文就重点来看…

IP协议头

IP 4位版本号(version)4位头部长度(header length)8位服务类型(Type Of Service)16位总长度(total length)16位标识(id)3位标志字段13位分片偏移(…

PEIS源码 体检源码 医院体检系统源码

PEIS体检管理系统源码 PEIS源码 体检源码 医院体检系统源码 本套PEIS医院体检管理系统源码,采用C#语言开发,C/S架构,前台开发工具为Vs2012,后台数据库采用oracle大型数据库。有演示。 文末获取联系 PEIS体检管理系统适用于大中型…