以下のコードを参照してください。ここでは String 定数に基づいて、さまざまなタイプのコンポーネント クラスをインスタンス化しています。現在、少なくとも 15 種類の String 定数があります。したがって、このパターンに従うと、15 の異なるケースがあり、それらの多数の if -else ブロックが存在します。これを行うより良い方法はありますか?最小限のコード変更で、ケースを追加および削除できる柔軟性が必要です。
public UIComponent initCellEditor(String editorType) {
UIComponent editControl = null;
if ("TbComboBoxCellType".equals(editorType)) {
editControl = new WebListEntryField();
editControl.setId("ComboBox");
} else if ("TbStringCellType".equals(editorType)) {
editControl = new WebInputEntryField();
editControl.setId("String");
} else if ("TbDateCellType".equals(editorType)) {
editControl = new WebDateEntryField();
editControl.setId("Date");
} else if ("TbDateTimeCellType".equals(editorType)) {
editControl = new WebDateTimeEntryField();
editControl.setId("DateTime");
} else {
//default editor is allways a text input
editControl = new WebInputEntryField();
editControl.setId("Input");
}
return editControl;
}
PS: JDK 6 を使用しています。そのため、文字列機能のスイッチを使用できません。