首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >命令模式基础

命令模式基础
EN

Stack Overflow用户
提问于 2015-10-27 17:53:38
回答 1查看 138关注 0票数 2

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

代码语言:javascript
复制
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的博客文章称,

接收方知道该如何执行请求。

那么,我猜接收器是一个HashMap将存储?

3.命令能返回结果吗?

像"ping“或”关机“这样的命令应该表明在执行命令之后发生了什么。这些命令能返回值吗?

EN

回答 1

Stack Overflow用户

发布于 2015-10-27 18:11:25

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

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

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

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

  1. 应将解析的信息存储在何处?

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

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

是的,您可以随心所欲地实现execute()方法。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33375182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档