Estoy trabajando en un código de interfaz de usuario donde tengo una Actionclase, algo como esto:
public class MyAction extends Action {
public MyAction() {
setText("My Action Text");
setToolTip("My Action Tool tip");
setImage("Some Image");
}
}
Cuando se creó esta clase de acción, se suponía que la Actionclase no sería personalizable (en cierto sentido, su texto, información sobre herramientas o imagen no se cambiarán en ninguna parte del código). Ahora, necesitamos cambiar el texto de acción en alguna ubicación del código. Entonces, le sugerí a mi compañero de trabajo que eliminara el texto de acción codificado del constructor y lo aceptara como argumento, para que todos se vean obligados a pasar el texto de acción. Algo como este código a continuación:
public class MyAction extends Action {
public MyAction(String actionText) {
setText(actionText);
setTooltip("My Action tool tip");
setImage("My Image");
}
}
Él, sin embargo, piensa que dado que el setText()método pertenece a la clase base, se puede usar de manera flexible para pasar el texto de acción donde sea que se cree una instancia de acción. De esa manera, no hay necesidad de cambiar la MyActionclase existente . Entonces su código se vería así.
MyAction action = new MyAction(); //this creates action instance with the hardcoded text
action.setText("User required new action text"); //overwrite the existing text.
No estoy seguro si esa es una forma correcta de lidiar con el problema. Creo que en el caso mencionado anteriormente, el usuario de todos modos va a cambiar el texto, entonces, ¿por qué no forzarlo mientras construye la acción? El único beneficio que veo con el código original es que el usuario puede crear la clase de acción sin pensar mucho en configurar el texto.