多值场景的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,或者一个封装数据结构并提供更多功能的类。您是否估计组合框的最大数量?即使字段的数量很大,我还是希望每个组合框都有一个字段。任何实际应用程序的表单字段数量都是有限的。