私は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クラスを作成できることです。