Я працюю над кодом інтерфейсу, де я маю 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.
Я не впевнений, чи це правильний спосіб вирішення проблеми. Я думаю, що у вищезгаданому випадку користувач все-таки змінить текст, то чому б не змусити його під час створення дії? Єдиною перевагою, яку я бачу з оригінальним кодом, є те, що користувач може створювати клас дій, не задумуючись над налаштуванням тексту.