首页 > 其他分享 >10.21

10.21

时间:2024-11-20 10:06:48浏览次数:1  
标签:10.21 Receiver 命令 Command receiver command public

命令模式

命令模式(Command Pattern)是一种行为型设计模式,它将请求封装成一个对象,从而允许你使用不同的请求、队列或者日志请求来参数化其他对象。命令模式也支持撤销操作。

下面是一个简单的Java代码示例,演示了命令模式的实现:

// 命令接口
interface Command {
    void execute();
}

// 具体命令类
class ConcreteCommand implements Command {
    private Receiver receiver;

    public ConcreteCommand(Receiver receiver) {
        this.receiver = receiver;
    }

    public void execute() {
        receiver.action();
    }
}

// 接收者类
class Receiver {
    public void action() {
        System.out.println("Receiver executes the command.");
    }
}

// 调用者类
class Invoker {
    private Command command;

    public void setCommand(Command command) {
        this.command = command;
    }

    public void executeCommand() {
        command.execute();
    }
}

// 客户端代码
public class CommandPatternExample {
    public static void main(String[] args) {
        Receiver receiver = new Receiver();
        Command command = new ConcreteCommand(receiver);

        Invoker invoker = new Invoker();
        invoker.setCommand(command);
        invoker.executeCommand();
    }
}

在上述示例中,我们定义了一个命令接口 Command,其中包含一个 execute() 方法。

然后,我们实现了具体命令类 ConcreteCommand,它实现了 Command 接口,并持有一个接收者对象 Receiver

接着,我们定义了接收者类 Receiver,其中包含一个 action() 方法,用于执行实际的操作。

在调用者类 Invoker 中,我们通过 setCommand() 方法设置要执行的命令,然后通过 executeCommand() 方法执行命令。

在客户端代码中,我们创建了接收者对象 receiver 和具体命令对象 command,并将命令对象设置到调用者对象 invoker 中。最后,调用 invoker.executeCommand() 执行命令。

命令模式的关键思想是将请求封装成一个对象,使得请求的发送者和接收者解耦,从而可以灵活地处理请求、撤销操作或者记录日志等。这种方式可以方便地添加新的命令,支持请求的排队和延迟执行,并可以实现命令的撤销和重做操作。

标签:10.21,Receiver,命令,Command,receiver,command,public
From: https://www.cnblogs.com/luoqingci/p/18556269

相关文章

  • AIGC时代算法工程师的面试秘籍(第二十五式2024.10.21-11.3) |【三年面试五年模拟】
    写在前面【三年面试五年模拟】旨在整理&挖掘AI算法工程师在实习/校招/社招时所需的干货知识点与面试经验,力求让读者在获得心仪offer的同时,增强技术基本面。欢迎大家关注Rocky的公众号:WeThinkIn欢迎大家关注Rocky的知乎:RockyDingAIGC算法工程师面试面经秘籍分享:WeThi......
  • 停课日志 part1 2024.10.21-10.25
    10.21次短路1.dijkstra用两个dist数组记录最短路和次短路适用条件:严格/非严格非简单2.dijkstra跑出最短路,保存路径,枚举删除路径上每一条边,跑最短路记录最大值。适用条件:非严格简单3.从起点s和终点t分别跑出最短路d1,d2,枚举图中每一条边<u,v>,计算(d1[u]+d2[v]+边权)的次大......
  • C#/.NET/.NET Core技术前沿周刊 | 第 11 期(2024年10.21-10.31)
    前言C#/.NET/.NETCore技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NETCore领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。欢迎投稿、推荐或自荐优质文章、项目、学习资源等。......
  • 周报 | 24.10.21-24.10.27文章汇总
    为了更好地整理文章和发表接下来的文章,以后每周都汇总一份周报。周报|24.10.14-24.10.20文章汇总-CSDN博客OpenCV学堂|YOLOv8实战|荧光显微镜细胞图像检测-CSDN博客江大白|通用视觉Backbone,TransXNet:全局+局部动态=性能强大(附源码及源码)-CSDN博客OpenMMLab|S4模......
  • 10.21人工智能技术分享
    1.使用AI时提示语设计公式(任务导向)(1)角色:指定AIGC所扮演的角色。例如,让AI扮演一个小学数学教师、法律顾问等等(2)任务:明确告诉AIGC要完成什么任务(3)要求:概述这个任务需要遵守的规则、标准和实现的结果(类型:文章、故事、诗歌、对话等;格式要求:文本、语音、图像等;风格:热烈、奔放、严谨......
  • 10.21~10.27 总结
    联考:https://www.cnblogs.com/british-union/p/liankao.html做题:学了一下线段树3,现在可以默写对了。CSPS2过程14:26发了密码开始看题。先读了一遍,感觉T1T2是简单题,T3可能得出充分必要条件之后DS优化dp?T4很长,但是我最讨厌\(2^k\)相关题(包含位运算),并瞬间想到之前某次......
  • 深度学习周报(10.21-10.27)
    目录摘要Abstract1机器学习(复习)1.1训练过程1.2非线性模型1.3新模型优化1.4激活函数2深度学习基本概念2.1深度学习的本质2.2训练过程2.2.1定义一组函数(defineasetoffunction)2.2.2 评估函数的好坏(goodnessoffunction)2.2.2 选择最佳的函数(pi......
  • 2024.10.21
    在有maven仓库的情况下连接(1)在pom.xml当中导入MySQL的依赖mysqlmysql-connector-java5.1.402)再新建jdbc.properties,和application.properties并列就好,并且在当中写MySQL的连接信息。Jdbc.driverClass:com.mysql.jdbc.Driver//【此处如果mysql版本大于8,就写com.mysq......
  • 10.21
    软件构造第六次作业  一.单选题(共2题,25分)1. (单选题)测试驱动开发的目的是()A.只编写使测试通过的功能代码B.家中软件测试比重C.加速开发过程D.要求在编写功能代码前先编写测试代码我的答案: C:加速开发过程;正确答案: C:加速开发过程; 12.5分2. ......
  • 10.21学习记录
    注意程序的书写他是步骤而不是描述关系例子判断数值的位数当我们判断大于的时候从高到低判断但当数字很大的时候,ifelse的书写就会无穷无尽那我们怎么样才能摆脱无穷无尽呢?循环 以类似的语句对输入的数字进行运算通过不断/10的操作可以不断从右边划掉数字如352......