gpt4 book ai didi

java - 命令模式基础

转载 作者:行者123 更新时间:2023-11-30 08:07:59 30 4
gpt4 key购买 nike

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

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 中。根据DZone's blog post ,

The Receiver has the knowledge of what to do to carry out the request.

所以,我猜 Receiver 是存储 HashMap 的地方?

<强>3。命令可以返回结果吗?
诸如“ping”或“shutdown”之类的命令应指示执行命令后发生的情况。这些命令可以返回值吗?

最佳答案

  1. Whose responsibility is it to parse the input?

每一行有两部分:命令名称和参数。参数是特定于命令的,所以你应该有 CommandsProvider 应该:

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

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

  1. Where should the parsed information be stored?

信息存储在命令中,接收者简单地执行它。

  1. Can commands return results?

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

关于java - 命令模式基础,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33375182/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com