我正在编写具有Action
类的UI代码,例如:
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.
我不确定这是否是解决问题的正确方法。我认为在上述情况下,用户还是要更改文本,所以为什么在构造动作时不强迫他呢?我在原始代码中看到的唯一好处是,用户可以创建Action类,而无需过多考虑设置文本。