多值场景的Java设计

多值场景的Java设计,java,code-complexity,Java,Code Complexity,我有两个组合框,如下所示 无论何时单击“完成”按钮,我都会从组合框中获取值,并将其存储在如下所示的对象中 public class comboValues{ private String label1ComboString; private String label2ComboString; public String setLabel1Combo(String val){ this.label1ComboString = val; } public String setLabel2Comb

我有两个组合框,如下所示

无论何时单击“完成”按钮,我都会从组合框中获取值,并将其存储在如下所示的对象中

public class comboValues{
private String label1ComboString;
private String label2ComboString;

public String setLabel1Combo(String val){
this.label1ComboString = val;
}

public String setLabel2Combo(String val){
this.label2ComboString = val;
}

public void getLabel1Combo(){
return this.label1ComboString;
}

public void getLabel2Combo(){
return this.label2ComboString;
}
}
在我使用的控制器类中

        comboValues obj = new comboValues();
        obj.setLabel1Combo(label1ComboBox.getSelectionModel().getSelectedItem());
        obj.setLabel2Combo(label2ComboBox.getSelectionModel().getSelectedItem());
对于带有两个组合框的设计,代码看起来很简单。我的疑问是,如果组合框的数量增加怎么办?使用上述方法,代码将具有
很多线。克服这个问题的设计是什么?我如何在这个场景中实现它?

我可以从您的方法中看出,您希望添加更多的组合框,而针对它,您希望用java编写更少的代码来处理这些问题

您可以选择实现数组列表集合并在其中存储多个组合框。因此,每次您都不需要创建新对象,它将变得动态


希望它能消除你的疑虑。如果您尚未清除,请发表评论。

您可以拥有一个数组或组合框的ArrayList。这样,您可以引用任意数量的框。您的类将更改为以下内容:

public class ComboValues {
    private String[] comboStrings;
    ...
    public void setComboLabel(String label, int comboNum) {
        comboStrings[comboNum] = label;
    }
    public void getComboLabel(int comboNum) {
        return comboStrings[comboNum];
    }
    public void getComboBoxCount() {
        return comboStrings.length;
    }
}

...
String[] labels = ...
for (int i = 0; i < obj.getComboBoxCount(); i++) {
    obj.setComboLabel(labels[i], i);
}

使用一些数组、列表或映射?我认为您不需要像工厂模式或单例模式那样的设计模式。我认为您需要一个数据结构,如Map或ArrayList,或者一个封装数据结构并提供更多功能的类。您是否估计组合框的最大数量?即使字段的数量很大,我还是希望每个组合框都有一个字段。任何实际应用程序的表单字段数量都是有限的。