命令模式(设计模式详解)
创始人
2024-06-03 11:53:16
0

命令模式

描述

命令模式是一种行为设计模式,其目的是将请求封装为一个对象,从而允许您将请求参数化、将请求队列化或记录请求日志,以及支持可撤销操作。在命令模式中,请求者和接收者之间的关系被剥离,这使得命令对象成为一个独立的组件,可在需要时轻松添加、删除或替换。

在命令模式中,通常有四个角色:

  • 命令(Command):该对象封装了请求的操作以及必要的参数,以便将来可以执行操作。
  • 接收者(Receiver):该对象实际执行操作。
  • 调用者(Invoker):该对象持有命令并对其进行调用。
  • 客户端(Client):创建命令并将其传递给调用者以执行。

命令模式提供了一种解耦的方式,使得请求者和接收者之间的耦合度降低,从而使代码更加灵活和可维护。


实现

命令抽象

public interface Command {void exec();
}

命令实现

public class UpdateCommand implements Command {private Db db;public UpdateCommand(Db db) {this.db = db;}@Overridepublic void exec() {db.update();}
}

接受者Db数据库

public class Db {public void update(){System.out.println("db updating");}public void save(){System.out.println("db save");}
}

调用者

public class DbControl {Map commandMap;public DbControl() {commandMap = new HashMap<>();}public void put(int key, Command command) {if (!commandMap.containsKey(key)) commandMap.put(key, command);}public void sendCommand(int key){commandMap.get(key).exec();}
}

客户端

public class Client {public static void main(String[] args) {DbControl dbControl = new DbControl();Db db = new Db();dbControl.put(0,new UpdateCommand(db));dbControl.sendCommand(0);}
}

实验结果

在这里插入图片描述


使用场景

  • 操作的调用者和执行者需要解耦。在命令模式中,请求者和执行者分别封装在不同的对象中,从而可以将它们解耦。这使得请求者不必了解执行者的详细信息。

  • 支持撤销和恢复操作。命令模式可以记录执行的命令,以便在需要时撤销或恢复操作。这种撤销和恢复操作非常有用,特别是在涉及到事务性操作时。

  • 支持日志和错误处理。命令模式可以记录执行的命令和错误,以便进行日志记录和错误处理。

  • 支持批处理和队列化操作。命令模式可以将多个命令封装在一个对象中,从而支持批处理和队列化操作。

  • 支持异步操作。命令模式可以将执行命令的线程与请求线程分离,从而支持异步操作。

  • 支持命令的动态修改。命令模式可以通过修改命令对象的属性或参数,从而支持动态修改命令。

相关内容

热门资讯

三年级下册我做了一项小实验作... 三年级下册我做了一项小实验作文 篇一标题:探究种子发芽的条件在三年级下册的科学课上,我们进行了一项小...
三年级学生感受作文(优选6篇... 三年级学生感受作文 篇一我喜欢上学的理由我是一个三年级的学生,我非常喜欢上学。每天早上,当妈妈叫我起...
小学三年级说好普通话作文(优... 小学三年级说好普通话作文 篇一我要当一个好学生我是一个小学三年级的学生,我知道要成为一个好学生,首先...
三年级的黄果树瀑布的作文怎么... 篇一:三年级的黄果树瀑布之旅黄果树瀑布是中国贵州省的一处自然景观,也是我国最大的瀑布之一。作为一个三...
三年级作文抓鱼趣事21篇【最... 三年级作文抓鱼趣事21篇 篇一:我和小伙伴们的抓鱼经历在一个阳光明媚的周末,我和几个小伙伴决定去河边...
三年级作文:踢足球(精简6篇... 三年级作文:踢足球 篇一踢足球是我最喜欢的运动之一。我每天放学后都会和朋友们一起来到学校的操场上踢球...
写快乐的一件事三年级的作文3... 篇一:快乐的一件事在我三年级的时候,有一次我和妈妈一起去公园玩,那是一个阳光明媚的周末早上。我们带了...
秦皇岛黄金海岸游记三年级作文... 秦皇岛黄金海岸游记三年级作文 篇一我和家人去了秦皇岛黄金海岸度假,这是我人生中最美好的一次旅行。黄金...
一次旅行的经历作文三年级作文... 一次旅行的经历作文三年级作文 篇一我最难忘的一次旅行是和爸爸妈妈去海边玩的那次。那是一个阳光明媚的早...
三年级看图写作文借伞【优质6... 三年级看图写作文借伞 篇一今天,我们班级进行了一次有趣的活动,每个同学都被要求写一篇关于“借伞”的作...
三年级上册语文句子复习(优质... 三年级上册语文句子复习 篇一在三年级上册的语文学习中,我们学习了许多句子,现在让我们来进行一次复习吧...
三年级作文这一次我被感动了4... 篇一:三年级作文这一次我被感动了43篇这一次我被感动了43篇作文,这是我在三年级最难忘的一次经历。这...
木鱼岛小学三年级作文300字... 木鱼岛小学三年级作文300字 篇一我的梦想我是木鱼岛小学三年级的学生,我的名字叫小明。我有一个美丽的...
三年级的海边作文200字【精... 三年级的海边作文200字 篇一我在海边玩耍今天是个晴朗的日子,我和爸爸妈妈一起去海边玩耍。海边的沙滩...
三年级作文我的爸爸300字(... 三年级作文我的爸爸300字 篇一我的爸爸是一个非常疼爱我的人。他虽然有时候工作很忙,但是每天晚上都会...
我的植物朋友三年级作文(精彩... 我的植物朋友三年级作文 篇一我的植物朋友我家有一盆小红花,它是我的植物朋友。我每天都会给它浇水,晒太...
我的中秋节三年级作文400字... 我的中秋节三年级作文400字 篇一我和家人一起过中秋节中秋节是中国的传统节日,我和家人一起过了一个特...
三年级作文我可爱的小妹妹(推... 三年级作文我可爱的小妹妹 篇一我家有一个可爱的小妹妹,她叫小婷婷。她今年三岁,是一个活泼开朗的小女孩...
有万里长城作文三年级【优质6... 有万里长城作文三年级 篇一万里长城是中国古代的伟大工程,也是世界上最长的人类建筑物。长城是由很多砖石...
家乡一角100字作文三年级【... 家乡一角100字作文三年级 篇一我家乡的一角是一个美丽的公园。公园里有一片绿草地,上面开满了五颜六色...