java命令模式

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

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

  1. public interface Command {  
  2.     public void exe();  
  3. }  
  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. }  
  1. public class Receiver {  
  2.     public void action(){  
  3.         System.out.println("command received!");  
  4.     }  
  5. }  
  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. }  
  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其实就是一种将请求和呈现分离的技术,其中必然涉及命令模式的思想!

posted on   范兵  阅读(379)  评论(0编辑  收藏  举报

编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示