Java 命令模式基础

Java 命令模式基础,java,design-patterns,command-pattern,Java,Design Patterns,Command Pattern,假设我有一个包含如下内容的文件,它是一些配置信息和一些命令的组合: 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。谁负责解析

假设我有一个包含如下内容的文件,它是一些配置信息和一些命令的组合:

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。解析后的信息应该存储在哪里?
来自前3行的解析信息将放在
HashMap
中。根据,

接收者知道如何执行请求

所以,我猜接收方就是存储
HashMap
的那个

3。命令能否返回结果?
像“ping”或“shutdown”这样的命令应该指示在执行命令后发生了什么。这些命令可以返回值吗

  • 谁负责解析输入
  • 每行有两部分:命令名和参数。参数是特定于命令的,因此您应该有
    CommandsProvider
    ,它应该:

    • 将文件拆分为行
    • 对于每行,分别使用第一个单词和其他单词
    • 根据第一个单词创建命令(您可能有
      CommandsRegistry
      知道如何通过命令名查找命令)
    • 为命令提供所有参数
    Command
    PingCommand
    知道它的第一个参数是server。理论上,您可以将每个命令与
    ArgumentsParser
    配对,后者接受单词数组并配置命令,但不确定是否有必要

  • 解析后的信息应该存储在哪里
  • 信息存储在命令中,接收方只需执行它

  • 命令可以返回结果吗

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

    好的,配置信息可以转换为
    ConfigureCommand
    ,结果可以存储在
    HashMap
    中。然后,每个命令都将访问此
    HashMap
    ?或者一个命令应该只访问它需要的内容,而不是整个
    HashMap
    ?命令应该只访问它自己的数据:
    newpingcommand(restPartOfLine)
    restPartOfLine这里是[“server1”,“192.168.0.1”]。只有
    PingCommand
    知道如何处理它为什么说“命令模式非常适合这个”?是否仅仅因为名称存储在文件中?