Sto lavorando a un codice UI in cui ho una Action
classe, qualcosa del genere -
public class MyAction extends Action {
public MyAction() {
setText("My Action Text");
setToolTip("My Action Tool tip");
setImage("Some Image");
}
}
Quando è stata creata questa classe di azioni, si presumeva praticamente che la Action
classe non fosse personalizzabile (in un certo senso - il suo testo, tooltip o immagine non saranno cambiati da nessuna parte nel codice). Ora, abbiamo bisogno di cambiare il testo dell'azione in qualche posizione nel codice. Quindi, ho suggerito al mio collega di rimuovere il testo dell'azione codificata dal costruttore e di accettarlo come argomento, in modo che tutti siano costretti 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 poiché il setText()
metodo 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 cambiare la MyAction
classe 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 di 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 la classe di azione senza pensare molto all'impostazione del testo.