设计模式——命令模式
2021/9/30 23:10:50
本文主要是介绍设计模式——命令模式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
命令模式基本介绍
- 命令模式(Command Pattern):在软件设计中,我们经常需要向某些对象发送请求,但并不知道请求的接受者是谁,也不知道被请求的操作是具体如何执行
- 命令模式使得请求发送者和请求接受者之间松耦合。
- 命令模式支持撤销功能
如何解决
通过调用者发送指令,接受者接受指令并执行指令;
Http请求就是一种典型的命令模式
例子:
实现命令接口
public interface Command { //执行命令 public void execute(); //撤销命令 public void undo(); }
开灯命令类
public class LightOnCommand implements Command { // 聚合LightReceiver List<LightReceiver> lights; public LightOnCommand(List<LightReceiver> lights) { this.lights = lights; } @Override public void execute(int num) { for (int i = 0; i < num; i++) { lights.get[i].on(); } } @Override public void undo() { for (int i = 0; i < num; i++) { lights.get[i].off(); } } }
定义接受者(电灯操作接受者)
public class LightReceiver { public void on() { System.out.println("电灯打开了..."); } public void off() { System.out.println("电灯关闭了..."); } }
命令发布者类
public class RemoteController { Command lightOnCommand; // 构造函数中,给这个发布命令者赋权(拥有开关灯的权利) public RemoteController(LightOnCommand command) { lightOnCommand = command; } // 命令开几盏灯 public void lightOn(int num) { lightOnCommand.execute(num); } }
这样通过命令类,实现了 命令发布者 与 执行者的 解耦;
命令发布者只管发命令(比如当前开几盏灯),具体执行是谁不关心,只要执行正确就行
类似将军发布命令,让100个小兵上前线,但不关心这一百个小兵具体是谁,只要有100个小兵执行就可以了
这篇关于设计模式——命令模式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?
- 2024-05-09企业src漏洞挖掘-有意思的命令执行