假设我有一个包含这样内容的文件,它是一些配置信息和一些命令的组合:
server1 192.168.0.1
server2 192.168.0.12
file1 /home/user1/file1
upload file1 to server1
ping server1
replicate server1
shutdown server1
命令模式非常适合于此,因为“upload”,“ping”,“replicate”和“shutdown”中的每一个都可以表示为命令。
但是,我仍然有几个问题:
1。解析输入的责任是谁?
输入文件包含文件和服务器所在的必要信息。谁来做解析?客户?接收器?调用
2。应该在哪里存储解析的信息?
来自前3行的解析信息将在HashMap
中。根据{{3}},
接收方知道如何执行请求。
所以,我猜测Receiver是HashMap
将存储的那个?
第3。命令可以返回结果吗?
“ping”或“shutdown”等命令应指示命令执行后发生的情况。这些命令可以返回值吗?
答案 0 :(得分:3)
- 解析输入是谁的责任?
醇>
每一行有两部分:命令名和参数。参数是特定于命令的,因此您应该CommandsProvider
应该:
CommandsRegistry
)命令PingCommand
知道它的第一个参数是server。从理论上讲,您可以将每个命令与ArgumentsParser
配对,该execute()
采用一系列单词并使用它配置命令,但不确定是否有必要。
- 应该在哪里存储解析的信息?
醇>
信息存储在命令中,接收器只是执行它。
- Can命令可以返回结果吗?
醇>
是的,您可以根据需要实施# Data pattern generator
def get_random_chunk_pattern():
return ''.join(random.choice(ascii_uppercase + digits + ascii_lowercase) for _ in range(8))
方法。