博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式(行为型模式)——命令模式(Command)
阅读量:7059 次
发布时间:2019-06-28

本文共 1473 字,大约阅读时间需要 4 分钟。

hot3.png

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

98cda4fc-00b1-300d-a25b-63229f0f1cbd.jpg

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

public interface Command {      public void exe();  }
public class MyCommand implements Command {        private Receiver receiver;            public MyCommand(Receiver receiver) {          this.receiver = receiver;      }        @Override      public void exe() {          receiver.action();      }  }
public class Receiver {      public void action(){          System.out.println("command received!");      }  }
public class Invoker {            private Command command;            public Invoker(Command command) {          this.command = command;      }        public void action(){          command.exe();      }  }
public class Test {        public static void main(String[] args) {          Receiver receiver = new Receiver();          Command cmd = new MyCommand(receiver);          Invoker invoker = new Invoker(cmd);          invoker.action();      }  }

输出:command received!

这个很哈理解,命令模式的目的就是达到命令的发出者和执行者之间解耦,实现请求和执行分开,熟悉Struts的同学应该知道,Struts其实就是一种将请求和呈现分离的技术,其中必然涉及命令模式的思想!

其实每个设计模式都是很重要的一种思想,看上去很熟,其实是因为我们在学到的东西中都有涉及,尽管有时我们并不知道,其实在Java本身的设计之中处处都有体现,像AWT、JDBC、集合类、IO管道或者是Web框架,里面设计模式无处不在。因为我们篇幅有限,很难讲每一个设计模式都讲的很详细,不过我会尽我所能,尽量在有限的空间和篇幅内,把意思写清楚了,更好让大家明白。本章不出意外的话,应该是设计模式最后一讲了,首先还是上一下上篇开头的那个图:

5d3c9b85-c281-3c48-999c-d27095c6ec9f.jpg

 

转载于:https://my.oschina.net/u/1431757/blog/715867

你可能感兴趣的文章
7-MST深入实验 //IOU
查看>>
8-高级路由:RIP版本兼容实验
查看>>
38-高级路由:BGP选路:环路预防
查看>>
反转整数
查看>>
Redis基础
查看>>
RAID磁盘阵列的原理与搭建
查看>>
绩效——企业管理的核心
查看>>
云容器引擎:让企业IT创新更简单更可靠
查看>>
Zstandard:一种新的无损压缩算法
查看>>
PHP打包下载多个TXT文件
查看>>
学习路由技术的第五节课
查看>>
想精通分布式以及高并发架构?那你得先搞定ZooKeeper架构原理!
查看>>
压缩和打包
查看>>
Cocos2d-x粒子系统 -- 实现下雪效果
查看>>
[Spring Cloud] 9 Spring Cloud Zookeeper
查看>>
linuxz中的rpc.rstatd 和rpc.statd命令
查看>>
OPPO R15最新广告片发出 预示将有全新交互方式
查看>>
mysql show status 命令中文详解
查看>>
关于Chrome和Firefox
查看>>
在IT界取得成功应该知道的10件事
查看>>