【发布时间】:2009-10-19 15:30:12
【问题描述】:
我需要为我正在编写的计算机游戏实施控制解决方案以获取用户输入。
我正在查看命令模式,但不确定它是否适合此模式。
【问题讨论】:
-
您能否详细说明您的命令输入?
标签: java design-patterns
我需要为我正在编写的计算机游戏实施控制解决方案以获取用户输入。
我正在查看命令模式,但不确定它是否适合此模式。
【问题讨论】:
标签: java design-patterns
IMO,命令模式在这种情况下被过度使用。如果命令完全是瞬态的——你不会存储或操作对象——那么增加的复杂性、对象代码开销和使用命令的样板就没有什么意义了。
更合适的方法是简单的开关和方法调用。也许您可能希望将您正在调用的接口与实现分开,尽管这可以在以后轻松完成(如果您喜欢测试或跟踪,您可能迟早会这样做)。如果可以更改键,那么从输入值到操作值的简单映射应该很简单。
【讨论】:
在不了解您的输入的情况下,可能值得查看Interpreter pattern 来读取和解析输入,并结合命令模式来实际执行命令。
【讨论】:
该技术通常称为“double dispatch”,但解释器模式描述的是一般模式。
【讨论】:
在命令模式中,最好使命令不可变,这意味着没有运行时输入。不要把问题复杂化。您需要做的就是实时接受输入并以某种方式对其进行解释(如果您设置了模式,请参阅 Thomas 的提示)。如果您想消除大的 switch 语句或大的 if-else 块,那么抽象工厂模式可能是值得的。
【讨论】: