首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理大量不同的按钮命令?

如何处理大量不同的按钮命令?
EN

Stack Overflow用户
提问于 2016-02-16 22:05:13
回答 2查看 50关注 0票数 0

我想在Java中解决不同按钮事件的变化

我有十几个不同的按钮,可以做,不同的动作,。总之,我有大约40到50个按钮,或者40到50个不同的命令。

然后我有很多参数,称为.z和A.z。每个Button事件都会导致一些参数的增加,例如:

button#1将使增加a,b,c和u

Button#2将使增加f和y

Button#5可使增加AFG和el

你可以看到,它变得非常复杂,但仍然可以,如果我不需要实现一个撤销选项。

因此,我需要

  1. 以某种方式告诉我的模型增加一组参数,而不是对每个可能的参数调用.increaseA(); .increase_x(); .increaseWhatever();
  2. 记住并反转已处理的命令,有关增加的参数(这些参数在类型和数量上可能有所不同)

通常,Command-Pattern将是我对撤销选项的选择,但在这里,我将得到超过50个不同的类,因为每个命令都会增加不同的参数,即使实际操作是相同的:递增参数

如果有人能给我一个非常干净的解决方案,我将不胜感激。

到目前为止,我的方法是将命令模式与某种字符串解析器混合起来:使用一个hashmap,其中包含按钮id作为键,而包含要增加的参数的字符串作为值。例如:<button1, "abcefgWY+1">,那么我只需要使用字符串解析器的模型,它将解析命令.但这并不能解决撤销问题,我是在问这是否是一个好方法?

EN

回答 2

Stack Overflow用户

发布于 2016-02-16 22:29:03

如果有一个带有相关字母作为键的整数的散列映射,并且这个值是像这个myIntegers<Character, IntegerValue>那样的实际值,会怎么样?

您的<button1, "abcedgWY">可能更像一个<buttonX, buttonObject>,其中按钮对象是一个字符数组,并且是一个计数器,用于表示已经发生了多少次增量,这样您就可以知道允许减少多少次。逐步遍历字符数组,使用每个字符作为myIntegers哈希映射的键,并按按钮或撤消选项递增或减少。

如果这只是一个普通的撤销,你将需要一个堆栈来推动和弹出,这可以是一个按钮的堆栈。如果它是一个撤销按钮,你只需跟踪多少撤销的增量是允许的。

票数 0
EN

Stack Overflow用户

发布于 2016-02-17 09:29:55

你在找立面设计的图案.

在那里你可以创建你的自定义子命令.

但是,当涉及到编码时,您可能会得到一个更简单的解决方案,正如您所希望的那样:

代码语言:javascript
复制
private void increaseAllOf(String whichOne, int amount) {

    for (char c: whichOne.toCharArray() ){
        switch(c){
        case 'a' : {increaseWhereElse(amount);break;}
        case 'b' : {increaseOnOtherPlace(amount);break;}

        }
    }

}

可以在开关语句中定义将调用哪个方法,这取决于whichOne-String的字符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35443910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档