迭代执行命令列表 - 哪个模式?

Dom*_*ler 3 java design-patterns strategy-pattern command-pattern

我编写了一个Java程序,它读入一个包含要执行的命令的文件(用我自己编写的语言).命令以字符串形式读入并放入数组中.现在,"调度程序" - 方法将循环遍历数组,解释命令并调用将对其执行操作的相应方法.

这当然导致了一大堆嵌套的if语句:

if commandReadIn == this, do that... 
if commandReadIn is of type x, get next element,treat next element as argument... 
etc. 
Run Code Online (Sandbox Code Playgroud)

现在我只有一些命令,但如果我想添加数百个呢?代码将变得无法维护.

现在我想知道是否可以完全摆脱条件逻辑.这里的命令模式似乎没什么用,因为我不得不在某个时候解释字符串..这意味着很多嵌套的"if".如果不可能,那么以一种能够轻松添加,编辑或删除命令的方式重构命令及其语法的最佳方法是什么?

hvg*_*des 9

使用命令模式命令.您的实施可以大大简化.

1)Command使用execute方法创建接口.
2)为每个命令创建一个实现.
3)启动程序时,创建命令字符串 - >命令实现的映射.
4)当您读入字符串时,查找相应的实现并调用它.
5)可选地,您的execute方法可以将自定义Context对象作为参数,允许您以通用方式传递命令参数.由实现来理解上下文对象并从中检索参数.

使用这种方法,除了可能检查您是否无法从命令实现的缓存中检索任何内容之外,您将没有if语句.