[设计模式]命令模式(Command)

命令模式很好理解,举个例子,司令员下令让士兵去干件事情,从整个事情的角度来考虑,司令员的作用是,发出口令,口令经过传递,传到了士兵耳朵里,士兵去执行。这个过程好在,三者相互解耦,任何一方都不用去依赖其他人,只需要做好自己的事儿就行,司令员要的是结果,不会去关注到底士兵是怎么实现的。我们看看关系图:

Invoker是调用者(司令员),Receiver是被调用者(士兵),MyCommand是命令,实现了Command接口,持有接收对象,看实现代码:

java\] [view plain](http://blog.csdn.net/zhangerqing/article/details/8243942 "view plain") [copy](http://blog.csdn.net/zhangerqing/article/details/8243942 "copy") 1. public interface Command { 2. public void exe(); 3. } \[java\] [view plain](http://blog.csdn.net/zhangerqing/article/details/8243942 "view plain") [copy](http://blog.csdn.net/zhangerqing/article/details/8243942 "copy") 1. public class MyCommand implements Command { 2. 3. private Receiver receiver; 4. 5. public MyCommand(Receiver receiver) { 6. this.receiver = receiver; 7. } 8. 9. @Override 10. public void exe() { 11. receiver.action(); 12. } 13. } \[java\] [view plain](http://blog.csdn.net/zhangerqing/article/details/8243942 "view plain") [copy](http://blog.csdn.net/zhangerqing/article/details/8243942 "copy") 1. public class Receiver { 2. public void action(){ 3. System.out.println("command received!"); 4. } 5. } \[java\] [view plain](http://blog.csdn.net/zhangerqing/article/details/8243942 "view plain") [copy](http://blog.csdn.net/zhangerqing/article/details/8243942 "copy") 1. public class Invoker { 2. 3. private Command command; 4. 5. public Invoker(Command command) { 6. this.command = command; 7. } 8. 9. public void action(){ 10. command.exe(); 11. } 12. } \[java\] [view plain](http://blog.csdn.net/zhangerqing/article/details/8243942 "view plain") [copy](http://blog.csdn.net/zhangerqing/article/details/8243942 "copy") 1. public class Test { 2. 3. public static void main(String\[\] args) { 4. Receiver receiver = new Receiver(); 5. Command cmd = new MyCommand(receiver); 6. Invoker invoker = new Invoker(cmd); 7. invoker.action(); 8. } 9. } 输出:command received! 这个很哈理解,命令模式的目的就是达到命令的发出者和执行者之间解耦,实现请求和执行分开,熟悉Struts的同学应该知道,Struts其实就是一种将请求和呈现分离的技术,其中必然涉及命令模式的思想!

相关推荐
羊群智妍5 小时前
2026GEO监测工具精选:免费AI搜索优化监测工具实用指南
百度·微信·命令模式·新浪微博·segmentfault
她和夏天一样热10 小时前
【设计模式】工厂方法模式在开发中的真实应用
设计模式·工厂方法模式
烤麻辣烫15 小时前
23种设计模式(新手)-9单例模式
java·开发语言·学习·设计模式·intellij-idea
资生算法程序员_畅想家_剑魔15 小时前
Java常见技术分享-设计模式的六大原则
java·开发语言·设计模式
刀法如飞16 小时前
从零手搓一个类Spring框架,彻底搞懂Spring核心原理
java·设计模式·架构设计
一条闲鱼_mytube16 小时前
智能体设计模式全景总结:21个模式快速串联指南
网络·设计模式
老蒋每日coding16 小时前
AI Agent 设计模式系列(十五)—— A2A Agent 间通信模式
人工智能·设计模式
Leo July17 小时前
【Java】Java设计模式实战指南:从原理到框架应用
java·开发语言·设计模式
老蒋每日coding19 小时前
AI Agent 设计模式系列(十四)—— 知识检索(RAG)模式
人工智能·设计模式·langchain
Yu_Lijing1 天前
基于C++的《Head First设计模式》笔记——模式合作
c++·笔记·设计模式