设计莫模式——命令模式

Memory SystemsCache, DRAM, Disk翻译学习DRAM部分(二) DRAM 的发展史 阅读详情

在这里插入图片描述

命令模式是一种行为型设计模式,用于将请求封装为一个对象,从而允许客户端通过参数化来进行参数化调用。在命令模式中,请求的发送者(调用者)和请求的接收者(执行者)之间解耦,使得可以灵活地扩展、撤销和队列请求。

以下是命令模式的主要角色:

  1. 命令(Command): 定义了执行操作的接口,通常包含执行(execute)方法。该接口可以是抽象类或接口,其中可能包含一些参数用于执行请求。

  2. 具体命令(Concrete Command): 实现了命令接口,负责实现具体的操作。具体命令将接收者对象绑定到一个动作,并在调用时调用接收者的相应方法来执行命令。

  3. 接收者(Receiver): 接收者知道如何实施与执行一个请求相关的操作。任何类都可以充当一个接收者,只要它能够实现命令要求实现的相应功能。

  4. 调用者(Invoker): 调用者负责将命令发送给接收者执行。调用者并不知道命令的具体实现,它只知道如何调用命令对象来完成请求。

  5. 客户端(Client): 这个客户端是命令模式中的客户端。负责创建具体命令对象,并将其绑定到调用者上,以便触发相关操作,更为恰当的称作装配者更合适,组装接受者和命令对象。

命令模式的优点包括:

  • 解耦了调用操作的对象和实际执行操作的对象,降低了系统的耦合度。
  • 可以轻易地在命令对象上实现撤销、重做、日志记录等功能。
  • 可以将命令对象进行参数化,使得可以更加灵活地调用不同的请求。

命令模式通常应用于需要将请求发送给其他对象进行处理的场景,例如菜单项、按钮、键盘快捷键等用户界面元素的操作。

具体类图如下:
在这里插入图片描述

总而言之,言而总之,类的依赖关系如图,下面引入一个DEMO级别的示例。

示例代码

类图
在这里插入图片描述

Command

public interface Command {
    void execute();
}

Receiver 类

public class Receiver {
    public void action(String cmd){
        System.out.println("hello i am action , from cmd :"+cmd);
    }
}

ConcreteCommand

public class ConcreteCommand  implements Command{
    String cmd="i am concrete";
    Receiver receiver;
    public ConcreteCommand(Receiver receiver){
        this.receiver=receiver;
    }
    @Override
    public void execute() {
        receiver.action(cmd);
    }
}

Invoker

public class Invoker {
   private Command cmd;
    public void setCmd(Command cmd){
        this.cmd=cmd;
    }
    public void executeCmd(){
        cmd.execute();
    }
}

Client

public class Client {
    public static void main(String[] args) {
        System.out.println("hello , i am cmd design pattern");
        Receiver receiver=new Receiver();
        Command cmd=new ConcreteCommand(receiver);

        Invoker invoker=new Invoker();
        invoker.setCmd(cmd);

        invoker.executeCmd();


    }
}

后续会引入项目实例,进行实践性说明。

老款 NUC 复活计划:装 Ubuntu 部署 OpenClaw 本地 AI 老款 NUC 变身本地 AI 服务器指南 本文详细介绍了如何将老旧华硕 NUC 设备改造为本地 AI 服务器。主要内容包括: 硬件评估:列出老款 NUC 的最低配置要求(i3 6代/8GB内存/256GB SSD),并提供兼容性检查命令和性能预期表 系统准备:指导备份数据、下载 Ubuntu 22.04 LTS 和制作启动盘的方法(Windows/Linux双平台) 安装流程:从 BIOS 设置到 Ubuntu 安装的完整步骤,包括推荐的分区方案 系统优化:禁用不必要的服务、内核参数调优、Swap 配置和 阅读详情

相关推荐

Linux中断子系统分析之(四):驱动程序申请中断

中断子系统中有一个重要的设计机制,那就是Top-half和Bottom-half,将紧急的工作放置在Top-half中来处理,而将耗时的工作放置在Bottom-half中来处理。 如果中断不分上下半部处理,那么意味着只有等上一个中断完成处理后才会打开中断,下一个中断才能得到响应。当某个中断处理处理时间较长时,很有可能就会造成其他中断丢失而无法响应,影响系统性能。 中断分成上下半部处理可以提高中断的响应能力,在上半部处理完成后便将中断打开,这样就可以响应其他中断了,等到中断退出的时候再进行下半部的处理。为了进

m0_46525308的博客 1229

设计模式之命令模式

说实话这个模式挺令人纠结的,但从这个模式的定义上来看,有点让人摸不到什么头脑,而且查看资料以后会发现还是有点稀里糊涂的,说懂了吧也很简单,也不懂吧也有不懂的理由,于是查阅手头的各种书籍,在此写下心得体会,算是加深一下印象。 命令模式的定义:将请求封装成一个对象,从而让用户使用不同的请求把客户端参数化,以及支持可撤销和恢复的功能。 从定义上来看着实令人一脸懵逼,在这里描述一下博主个人的理解:

菜鸟博客 2万+

TC3xx芯片SPI多从机通信避坑指南:AUTOSAR框架下的DMA配置与片选切换

本文针对英飞凌TC3xx芯片在AUTOSAR框架下实现SPI多从机通信的实战难题,提供了详尽的避坑指南。重点解析了如何利用硬件支持的16路片选(SLSO)灵活切换,在AUTOSAR中正确配置不同时序的从设备,并深入探讨了异步模式下DMA的启用条件与关键配置细节,帮助开发者规避通信失败风险,提升系统可靠性。

nn3456的博客 154

设计模式之命令模式详解

命令模式概述:智能家居遥控器示例 命令模式是一种将请求封装为对象的行为设计模式,通过解耦请求发送者和接收者来实现灵活控制。本文以智能家居遥控器为例演示了命令模式的实现: 核心结构:包含Command接口(执行/撤销操作)、Receiver(具体执行者,如电灯)、ConcreteCommand(如开关灯命令)和Invoker(遥控器)四个角色。 代码实现: 电灯作为Receiver实现具体操作 开关灯命令封装电灯操作 遥控器管理命令并触发执行 支持命令撤销功能 优势:解耦请求发送者和接收者,支持命令队列、撤销

从不水文,坚持创作,加油 2051

STM32测测速---编码电机读取速度的计算

速度计算:轮胎每转一圈的脉冲数取决于编码器的分辨率,可由下面公式进行计算:PPR是电机的线数最后可以计算轮胎每转一圈的脉冲数为:轮胎每转一圈的脉冲数 = 9.6 × 11 × 4 = 422.4最后的速度公式简化为:速度 = (0.01 秒内产生的脉冲数 ∗ 0.055 ∗ π )/(0.01 ∗422.4​。

weixin_69414084的博客 3812

语言随机效应模型_线性混合效应模型 VS 方差分析

线性混合效应模型相比方差分析具有很多优点。为了让大家更直观的了解,我们来做一下两者的对比。基于模拟的方法,生成了以下数据dat_sim:这种数据格式是长格式,也就是从实验软件导出来的那种数据格式。这种数据格式可以直接使用线性混合效应模型进行分析。该实验设计是被试内项目间的单因素两水平设计。category是自变量,两个水平分别是outgroup和ingroup,outgroup比ingr...

weixin_31960565的博客 2688

命令模式

命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。 介绍 意图:将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。 主要解决:在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记...

ThinkWon的博客 5379

find命令

命令是 Linux/Unix 系统中用于搜索文件和目录的强大工具,支持多种搜索条件组合,并能对搜索结果执行各种操作。以下是其详细说明、常用参数及示例: 搜索路径:指定起始目录(如 、 或 表示当前目录)。 查找条件:基于文件名、类型、大小、时间等属性过滤。 处理动作:对匹配结果执行操作(如打印、删除、执行命令等)。 常用参数及示例 1. 按名称查找 :区分大小写匹配文件名。 :不区分大小写匹配文件名。 2. 按文件类型查找 :指定文件类型。 文件类型: :普通文件 :目录 :符号链接

qiao2458的博客 1138

Java设计模式之《命令模式》

命令模式是一种行为设计模式,它将请求封装成独立对象,实现请求发出者与执行者的解耦。该模式包含命令接口、具体命令、接收者、调用者和客户端五个角色。典型应用场景包括任务调度、数据库操作和餐厅点餐等。优点在于解耦彻底、支持撤销/队列功能,但会增加类的数量。通过将"执行动作"封装为命令对象,使系统更灵活,但需权衡复杂度。

weixin_50055999的博客 1490

[cadence]Allegro STEP-3D模型导入、匹配、导出的方法及注意事项

如果 Avaliable里面没有和symbols对应的文件,说明没有对应的3D模型,这时候需要在你的step路径下创建y与 .dra 封装文件相同名称的。选择好 Output file 和 name 之后呢,点击 Export。首先打开Setup - Step Package Mapping。注意:路径中不能有中文名称,有的话你会发现不能导出,也不会报错。在路径下将下载或者自己做的 3D模型文件改名之后,重新打开。可在View -> 3D View。

LuDvei的博客 2万+

Codex 100个真实案例 - 全系列总结与Codex最佳实践全解析

历经100个案例的淬炼,我们终于来到了终点!本篇是整个系列的压轴之作——全面回顾100个案例的分类统计、提炼Codex使用的核心技巧和最佳实践、总结Prompt工程的精华要点、剖析常见错误及解决方案、展望AI编程的未来趋势,并为不同水平的读者规划学习路径。这不仅是一篇总结,更是一本Codex实战手册!

yueyeguzhuo的专栏 138

您的设计模式——命令模式【Command Pattern 】

今天讲命令模式,这个模式从名字上看就很简单,命令嘛,老大发命令,小兵执行就是了,确实是这个意思, 但是更深化了,用模式来描述真是是世界的命令情况。正在看这本书的你,我猜测分为两类:已经工作的和没有 工作的,先说没有工作的,那你为啥要看这本书,为了以后工作呗,只要你参加工作,你肯定会待在项目组,那 今天我们就以项目组为例子来讲述命令模式。 我是我们部门的项目经理,就是一个项目的头,在中国做项目

429

PY32F406K1CU6+I2C+ AT24C64 基本配置

【代码】PY32F406K1CU6+I2C+ AT24C64 基本配置。

sam的博客 90

C# 设计模式之命令模式

C# 设计模式之命令模式

鲤籽鲲的博客 1373

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

软件设计模式——命令模式

一、定义 命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。 二、作用 将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行...

JingHaiRoad Coder 451

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

JavaScript 设计模式之命令模式

什么是命令模式? 假设有一个快餐店,而我是该餐厅的点餐服务员,那么我一天的工作应该是这样的:当某位客人点餐或者打来订餐电话后,我会把他的需求都写在清单上,然后交给厨房,客人不用关心是哪些厨师帮他炒菜。我们餐厅还可以满足客人需要的定时服务,比如客人可能当前正在回家的路上,要求1个小时后才开始炒他的菜,只要订单还在,厨师就不会忘记。客人也可以很方便地打电话来撤销订单。另外如果有太多的客人点餐,厨房可以...

仇益阳的博客 1万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

命令模式(CommandPattern)

今天主要学习命令模式,java获得创意。其他屏幕教程。这里总结一下命令模式更重要。 刚开始以为命令模式是非常罕见的外观,但研究发现,他与同样单身完成。有设计模式最简单的集中模式。 象,然后其它的类直接调用该对象实现的接口的方法,达到调用对象的动作的目的。达到解耦合。 用小样例来解释:遥控器,电灯。遥控器要控制电灯的开关。可是遥控器中不应该有关于电灯的详细实现代码。这时就应该...

aofan9566的博客 229

CommandPattern-命令模式

角色: Command: 定义命令的统一接口 ConcreteCommand:Command接口的实现者,用来执行具体的命令 Receiver:命令的实际执行者 Invoker:命令的请求者,这个角色用来对各个命令进行控制 使用场景: 1 命令的发送者和命令执行者有不同的生命周期,命令发送了并不是立即执行 2 命令模式是对功能方法的抽象,不是对对象的抽象 3 命令模式是将功能提升到对象来操作,以便...

其实我也没有太多期盼,毕竟一生太短,少有圆满 233

【设计模式】用Java实现命令模式

命令模式(Command Pattern)是一种行为设计模式,它将请求封装为一个对象,从而使你可以使用不同的请求对客户端进行参数化。命令模式还支持请求的排队、记录日志、撤销操作等功能。命令接口(Command):定义执行命令的方法,可以是抽象类或接口。具体命令类(Concrete Command):实现命令接口,封装了具体的请求和接收者,负责执行请求。接收者类(Receiver):执行实际的操作,命令对象将请求委托给接收者来执行。

分享Java硬核干货 1万+

【Java 设计模式】行为型之命令模式

命令模式是一种行为型设计模式,用于将请求封装为对象,使得可以参数化客户端对象,并且能够排队、记录请求,以及支持撤销操作。命令模式的核心思想是将请求发送者和接收者解耦,通过命令对象来封装请求。命令对象包含了执行请求的方法,通过这种方式实现了请求的发起和执行的解耦。命令模式通常包含四个主要角色:命令(Command)、具体命令(Concrete Command)、命令发送者(Invoker)、命令接收者(Receiver)。声明了执行请求的接口实现了命令接口,对具体的请求进行了封装。

好久不见的流星 2033

深入浅出设计模式 - 命令模式

深入浅出设计模式 - 命令模式

激流丶的博客 3883

23种设计模式之命令模式

命令模式(Command Pattern)是一种行为设计模式,它将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化,对请求排队或者记录请求日志,以及支持可撤销的操作。

weixin_51395608的博客 1573

设计模式——命令模式

在软件设计的世界里,我们经常需要在不同的对象之间传递操作请求。如果这些请求的发送者和接收者之间的耦合度太高,系统的可维护性和扩展性就会受到影响。这时候,命令模式(Command Pattern)就派上了用场。命令模式是一种行为设计模式,它将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。Command)命令模式提供了一种将请求封装成对象的方法,使得你可以用不同的请求、队列或者日志请求来参数化其他对象。它还支持撤销操作。

2302_77758423的博客 1010

【Java设计模式】命令模式

✍ 在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指定具体的请求接收者即可,此时,可以使用命令模式来进行设计,`使得请求发送者与请求接收者消除彼此之间的耦合,让对象之间的调用关系更加灵活。 类似于我们通过开关打开电灯 命令模式可以对发送者和接收者完全解耦,发送者与接收者之间没有直接引用关系,发送请求的对象只需要知道如何...

明月沉江春雾晓 1105

Java特性之设计模式【命令模式】

定义了执行操作的接口,通常包含一个execute方法,用于调用具体的操作。

Vinjcent 1261

设计模式-命令模式

命令模式 命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。 模式结构 command:定义命令的接口,声明执行的方法。 concretecommand:命令接口实现对象,是“虚”的实现,永昌汇持有接收者,并调用接受者的功能来完...

小码农一枚 266
上一篇: 常用设计模式
下一篇: UML规范-类图
五之
博客等级 码龄15年 257粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五之

真实案例以及商业项目技术

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值