我写了一个Java程序,它读入一个包含要执行的命令的文件(用我自己编写的语言)。这些命令以字符串形式读入并放入数组中。现在一个“调度员” - 方法将遍历数组,解释命令并调用将对其执行操作的相应方法。遍历命令列表来执行 - 哪种模式?
这当然导致了大块的嵌套if语句:
if commandReadIn == this, do that...
if commandReadIn is of type x, get next element,treat next element as argument...
etc.
现在我只有命令极少数,但如果我想添加数百什么?该代码将变得无法维护。
现在我想知道是否有可能彻底摆脱条件逻辑。命令模式在这里似乎没有多大用处,因为无论如何,我必须在某个点解释这些字符串。这意味着很多嵌套的“if”。如果这是不可能的,那么重构命令及其语法的最佳方法是什么,以便于添加,编辑或删除命令?
感谢您的回答,我现在已经实施了命令模式。为了简单起见,我现在将一个包含状态信息而不是Context的对象传递给execute方法(某些命令需要使用更复杂的语法和复合命令的状态信息)。使用Context类会更好吗(我真的不知道如何使用上下文)?另外,我想知道我是否应该真的传递状态信息,或者如果最好具体的命令请求来自客户端的状态对象 – 2012-07-26 11:45:31
“包含状态信息的对象”是上下文!你做得对。我不会改变任何事情。您的命令可以通过这种方式进行测试。 – hvgotcodes 2012-07-26 11:46:53
哦,我明白了..我以为你是指特定的类(或接口,而不是)。你说得对,这些命令更容易测试,我会保持原样。非常感谢你的帮助! – 2012-07-26 12:26:33