Sto lavorando su un codice UI in cui ho una classe Action
, qualcosa del genere -
public class MyAction extends Action {
public MyAction() {
setText("My Action Text");
setToolTip("My Action Tool tip");
setImage("Some Image");
}
}
Quando questa classe Action è stata creata, si presupponeva che la classe Action
non fosse personalizzabile (in un certo senso - il suo testo, la descrizione del comando o l'immagine non saranno cambiati in nessun punto del codice). Ora, abbiamo bisogno di cambiare il testo dell'azione in qualche punto del codice. Quindi, ho suggerito al mio collaboratore di rimuovere il testo di azione codificato dal costruttore e accettarlo come argomento, in modo che tutti siano obbligati a passare il testo dell'azione. Qualcosa come questo codice qui sotto -
public class MyAction extends Action {
public MyAction(String actionText) {
setText(actionText);
setTooltip("My Action tool tip");
setImage("My Image");
}
}
Tuttavia, pensa che dal momento che il metodo setText()
appartiene alla classe base, può essere utilizzato in modo flessibile per passare il testo dell'azione ovunque venga creata l'istanza dell'azione. In questo modo, non è necessario modificare la classe MyAction
esistente. Quindi il suo codice sarebbe simile a questo.
MyAction action = new MyAction(); //this creates action instance with the hardcoded text
action.setText("User required new action text"); //overwrite the existing text.
Non sono sicuro che sia un modo corretto per affrontare il problema. Penso che nel caso sopra menzionato l'utente cambierà comunque il testo, quindi perché non forzarlo mentre costruisce l'azione? L'unico vantaggio che vedo con il codice originale è che l'utente può creare una classe Action senza pensare troppo all'impostazione del testo.