Пример:Что лучший способ инициализации графического интерфейса пользователя полей
public class MyWindow extends Window {
private final Panel panel = new Panel(new Layout());
private final TextField textField = new TextField();
private TextArea textArea;
private String value;
public MyWindow(String value) {
this.value = value;
setHeading("Example");
textArea = createTextArea();
panel.add(textArea);
panel.add(textField);
add(panel);
}
private TextArea createTextArea() {
TextArea textArea = new TextArea();
textArea.setValue(value);
textArea.setToolTip("tooltip");
}
}
Держите глаз на TextArea - Что Bestway инициализировать это поле? Инициализация встроенного поля или конструктор по умолчанию?
Должен ли я сделать, как указано выше, или, может быть, как это:
public class MyWindow extends Window {
...
private TextArea textArea = new TextArea();
...
public MyWindow(String value) {
...
setupTextArea();
...
}
private TextArea setupTextArea() {
textArea.setValue(value);
textArea.setToolTip("tooltip");
}
}
У меня есть много больше полей для инициализации и я не всегда могу объявить поле в одной строке. Иногда создание одного элемента в графическом интерфейсе требует создания двух других объектов. Поэтому код становится трудно читаемым - некоторые поля инициализируются в конструкторе, и все остальное в объявлении. На мой взгляд, это выглядит не очень хорошо.
Как вы это делаете?
EDIT: Может быть, мне нужно создать все поля в конструкторе и передать всю информацию методам в качестве аргументов?
http://stackoverflow.com/questions/1994218/should-i-instantiate-instance-variables-on-declaration-or-in-the-constructor –
Вы можете взять больше фабричной модели подхода. Нет никакого правильного или неправильного способа сделать это, поскольку некоторые ui более сложны, чем другие, вам нужно найти подходы, с которыми вам удобно. Одна вещь, которую вы хотите сохранить в глубине своего разума, заключается в том, насколько сложно продлить и изменить ui позже? – MadProgrammer