[设计模式]命令模式(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其实就是一种将请求和呈现分离的技术,其中必然涉及命令模式的思想!

相关推荐
蔡蓝9 小时前
设计模式-建造者模式
服务器·设计模式·建造者模式
不伤欣14 小时前
游戏设计模式 - 子类沙箱
游戏·unity·设计模式
漫谈网络14 小时前
MVC与MVP设计模式对比详解
设计模式·mvc
蔡蓝14 小时前
设计模式-观察着模式
java·开发语言·设计模式
哆啦A梦的口袋呀16 小时前
基于Python学习《Head First设计模式》第六章 命令模式
python·学习·设计模式
半路下车17 小时前
【Harmony OS 5】HarmonyOS应用测试指南
设计模式·harmonyos
周某某~17 小时前
一.设计模式的基本概念
设计模式
on the way 12317 小时前
行为型设计模式之Interpreter(解释器)
设计模式
cui_hao_nan17 小时前
设计模式——模板方法
java·设计模式
在未来等你17 小时前
Java并发编程实战 Day 11:并发设计模式
java·设计模式·多线程·并发编程·threadlocal·生产者消费者·读写锁