Ich arbeite an einem UI-Code, in dem ich eine Action
Klasse habe.
public class MyAction extends Action {
public MyAction() {
setText("My Action Text");
setToolTip("My Action Tool tip");
setImage("Some Image");
}
}
Bei der Erstellung dieser Action-Klasse wurde davon ausgegangen, dass die Action
Klasse nicht anpassbar ist (in gewissem Sinne - der Text, der Tooltip oder das Bild werden an keiner Stelle im Code geändert). Jetzt müssen wir den Aktionstext an einer bestimmten Stelle im Code ändern. Daher schlug ich meinem Kollegen vor, den fest codierten Aktionstext aus dem Konstruktor zu entfernen und als Argument zu akzeptieren, damit jeder gezwungen ist, den Aktionstext zu übergeben. So etwas wie dieser Code unten -
public class MyAction extends Action {
public MyAction(String actionText) {
setText(actionText);
setTooltip("My Action tool tip");
setImage("My Image");
}
}
Er ist jedoch der Ansicht, dass die setText()
Methode , da sie zur Basisklasse gehört, flexibel verwendet werden kann, um den Aktionstext überall dort zu übergeben, wo eine Aktionsinstanz erstellt wird. Auf diese Weise muss die vorhandene MyAction
Klasse nicht geändert werden . Also würde sein Code ungefähr so aussehen.
MyAction action = new MyAction(); //this creates action instance with the hardcoded text
action.setText("User required new action text"); //overwrite the existing text.
Ich bin mir nicht sicher, ob dies der richtige Weg ist, um mit dem Problem umzugehen. Ich denke, in dem oben genannten Fall wird der Benutzer den Text trotzdem ändern. Warum sollte er ihn nicht zwingen, während er die Aktion erstellt? Der einzige Vorteil, den ich mit dem Originalcode sehe, ist, dass der Benutzer eine Action-Klasse erstellen kann, ohne viel über das Festlegen von Text nachdenken zu müssen.