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
- 为命令提供所有参数
PingCommand
知道它的第一个参数是server。理论上,您可以将每个命令与ArgumentsParser
配对,后者接受单词数组并配置命令,但不确定是否有必要
是的,您可以根据需要实现
execute()
方法 好的,配置信息可以转换为ConfigureCommand
,结果可以存储在HashMap
中。然后,每个命令都将访问此HashMap
?或者一个命令应该只访问它需要的内容,而不是整个HashMap
?命令应该只访问它自己的数据:newpingcommand(restPartOfLine)
restPartOfLine这里是[“server1”,“192.168.0.1”]。只有PingCommand
知道如何处理它为什么说“命令模式非常适合这个”?是否仅仅因为名称存储在文件中?