繁体   English   中英

命令模式基础

[英]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”之类的命令应指示命令执行后发生的情况。 这些命令可以返回值吗?

  1. 解析输入是谁的责任?

每行包含2个部分:命令名和参数。 参数是特定于命令的,因此您应该具有CommandsProvider ,该CommandsProvider应:

  • 将文件拆分为行
  • 对于每一行,将第一个单词和其他单词分开
  • 根据第一个单词创建命令(您可能拥有CommandsRegistry知道如何通过其名称查找命令)
  • 提供所有命令参数

命令PingCommand知道其第一个参数是服务器。 从理论上讲,您可以将每个命令与ArgumentsParser配对,后者使用单词数组并使用它来配置命令,但不确定是否必要。

  1. 解析后的信息应存储在哪里?

信息存储在命令中,接收者只需执行它即可。

  1. 命令可以返回结果吗?

是的,您可以根据需要实现execute()方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM