[英]Command Pattern basics
假设我有一个内容如下的文件,该文件是一些配置信息和一些命令的组合:
server1 192.168.0.1
server2 192.168.0.12
file1 /home/user1/file1
upload file1 to server1
ping server1
replicate server1
shutdown server1
命令模式非常适合此,因为“上载”,“ ping”,“复制”和“关闭”中的每一个都可以表示为命令。
但是,我仍然有几个问题:
1.解析输入是谁的责任?
输入文件具有必要的信息,例如文件和服务器的位置。 谁来解析? 客户? 接收器? 祈求?
2.解析后的信息应存储在哪里?
前三行的解析信息将放入HashMap
。 根据DZone的博客文章 ,
接收方知道如何执行请求。
因此,我猜想Receiver是将存储HashMap
吗?
3.命令可以返回结果吗?
像“ ping”或“ shutdown”之类的命令应指示命令执行后发生的情况。 这些命令可以返回值吗?
- 解析输入是谁的责任?
每行包含2个部分:命令名和参数。 参数是特定于命令的,因此您应该具有CommandsProvider
,该CommandsProvider
应:
CommandsRegistry
知道如何通过其名称查找命令) 命令PingCommand
知道其第一个参数是服务器。 从理论上讲,您可以将每个命令与ArgumentsParser
配对,后者使用单词数组并使用它来配置命令,但不确定是否必要。
- 解析后的信息应存储在哪里?
信息存储在命令中,接收者只需执行它即可。
- 命令可以返回结果吗?
是的,您可以根据需要实现execute()
方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.