2016-08-04 4 views
0

Ich habe zwei Combo-Boxen, wie unten,Java-Design für mehrere Werte Szenario

enter image description here

wenn ich done Schaltfläche klicken, erhalte ich die Werte aus Combo-Box und speichert sie in einem Objekt wie unten,

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; 
} 
} 

in einem Controller-Klasse i, verwenden

 comboValues obj = new comboValues(); 
     obj.setLabel1Combo(label1ComboBox.getSelectionModel().getSelectedItem()); 
     obj.setLabel2Combo(label2ComboBox.getSelectionModel().getSelectedItem()); 

Für einen Entwurf mit zwei Kombinationsfeldern sieht der Code einfach aus. Mein Zweifel ist, wenn die Anzahl der Kombinationsfelder steigt? mit dem obigen Ansatz Code wird viele Zeilen haben. Was ist der Entwurf, um dieses Problem zu lösen und wie kann ich das in diesem Szenario umsetzen?

+2

Verwenden Sie ein Array, eine Liste oder eine Karte? –

+1

können Sie 'Map' verwenden – sidgate

+2

Ich glaube nicht, dass Sie ein Designmuster wollen, wie im Factory Pattern oder Singleton Pattern. Ich denke, Sie möchten eine Datenstruktur wie in Map oder ArrayList oder eine Klasse, die eine Datenstruktur umschließt und mehr Funktionalität bietet. –

Antwort

-1

Ich kann von Ihrem Ansatz sehen, dass Sie weitere Combo-Boxen hinzufügen möchten und dagegen möchten Sie weniger Code in Java, um alle diese zu behandeln.

Sie haben die Option, eine Array-Listen-Sammlung zu implementieren und mehrere Kombinationsfelder darin zu speichern. Sie müssen also nicht jedes Mal ein neues Objekt erstellen und es wird dynamisch.

Hoffe, es wird Ihre Zweifel beseitigen. Wenn Sie nicht gelöscht haben, bitte Kommentar.

0

Sie können ein Array oder eine ArrayList von ComboBoxen haben. Auf diese Weise können Sie eine beliebige Anzahl von Boxen referenzieren. Ihre Klasse würde sich in etwa so ändern:

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); 
}