私のクラスには 4 つのインスタンスがあり、テーブル インスタンスRichTable
の概念があります。current
フラグresetAll
に応じて、すべてのテーブルまたは現在のテーブル以外のすべてのテーブルの選択をクリアする必要があります。true の場合resetAll
はすべてをクリアし、そうでない場合は現在のものを除外します。現在のテーブルのインデックスは、クリーンアップ アクションを実行するメソッドにパラメーターとして渡されます。
すべてをクリアするための呼び出しは次のようになります。
clearSubTypeSettings(true,-1);
現在のものを除くすべてをクリアするための呼び出しは、次のようになります。
clearSubTypeSettings(true, col);
上記のメソッドの実装は次のとおりです。
private void clearSubTypeSettings(boolean resetAll, int exceptControl) {
if (!resetAll) {
clearAllExceptCurrent(exceptControl);
} else {
clearAll();
}
}
現在、これら 2 つのメソッドclearAllExceptCurrent(exceptControl)
と clearAll()
はほとんど同じように見えます。実装は次のとおりです。
private void clearAll() {
for (int i = 0; i < SUBTYPE_TABLES; i++)
if (getSubTypeTable(i).getSelectedRowKeys() != null) {
RichTable richTable = getSubTypeTable(i);
RowKeySet rowkeySet = richTable.getSelectedRowKeys();
rowkeySet.clear();
AdfFacesContext.getCurrentInstance().addPartialTarget(richTable);
}
}
と
private void clearAllExceptCurrent(int exceptControl) {
for (int i = 0; i < SUBTYPE_TABLES; i++)
if (i != exceptControl && getSubTypeTable(i).getSelectedRowKeys() != null) {
RichTable richTable = getSubTypeTable(i);
RowKeySet rowkeySet = richTable.getSelectedRowKeys();
rowkeySet.clear();
AdfFacesContext.getCurrentInstance().addPartialTarget(richTable);
}
}
ここに冗長なコードを重複して書いているように感じ、将来のメンテナンスが複雑になります。このコードを改善して、よりオブジェクト指向にするにはどうすればよいですか?