Я работаю над кодом пользовательского интерфейса, где у меня есть Action
класс, что-то вроде этого -
public class MyAction extends Action {
public MyAction() {
setText("My Action Text");
setToolTip("My Action Tool tip");
setImage("Some Image");
}
}
Когда этот класс Action был создан, предполагалось, что Action
класс не будет настраиваемым (в некотором смысле - его текст, всплывающая подсказка или изображение не будут изменены нигде в коде). Теперь нам нужно изменить текст действия в каком-то месте кода. Итак, я предложил моему коллеге удалить жестко закодированный текст действия из конструктора и принять его в качестве аргумента, чтобы каждый был вынужден передать текст действия. Примерно такой код ниже -
public class MyAction extends Action {
public MyAction(String actionText) {
setText(actionText);
setTooltip("My Action tool tip");
setImage("My Image");
}
}
Однако он считает, что поскольку setText()
метод принадлежит базовому классу, его можно гибко использовать для передачи текста действия везде, где создается экземпляр действия. Таким образом, нет необходимости менять существующий MyAction
класс. Так что его код будет выглядеть примерно так.
MyAction action = new MyAction(); //this creates action instance with the hardcoded text
action.setText("User required new action text"); //overwrite the existing text.
Я не уверен, что это правильный способ решения проблемы. Я думаю, что в вышеупомянутом случае пользователь все равно собирается изменить текст, так почему бы не заставить его при создании действия? Единственное преимущество, которое я вижу с оригинальным кодом, заключается в том, что пользователь может создавать класс Action, не задумываясь о настройке текста.