【发布时间】:2016-05-28 09:39:09
【问题描述】:
我想解决 Java 中不同 Button 事件的变体:
我有十几个不同的按钮可以执行不同的操作。 总之,我有大约 40 到 50 个按钮或 40 到 50 个不同的可能命令。
然后我有很多参数,称为 a..z 和 A..Z。
每个 Button-Event 都会导致一些参数的递增,例如:button#1 将 a,b,c 和 u 递增。Button#2 将 >增加 f 和 y。Button#5 将增加 AFG 和 el。
您可以看到,它变得非常复杂,但如果我不需要实现撤消选项,它仍然可以。
因此,我需要
以某种方式告诉我的模型增加一堆参数,而不是通过为每个可能的参数调用
.increaseA(); .increase_x(); .increaseWhatever();。记住并反转已处理的命令,相对于增加的参数(可能因类型和数量而异)
通常情况下,Command-Pattern 是我对 Undo-Options 的选择,但在这里我会得到超过 50 个不同的类,因为每个命令都会增加不同的参数,即使实际操作是相同:增加参数。
如果有人能告诉我一个非常干净的解决方案,我将不胜感激。
到目前为止,我的方法是将命令模式与某种字符串解析器混合:
使用 hashmap,包含 button-id 作为 key,由要增加的参数组成的 String 作为 value。例如:<button1, "abcefgWY+1">
然后我只需要带有字符串解析器的模型,这将解决命令......但这并不能解决 UNDO 问题,我想问这是否是一个好方法?
【问题讨论】:
标签: java command action undo command-pattern