我的班级中有四个RichTable
实例,并且有一个current
表实例的概念。根据一个标志resetAll
,我需要清除所有表或除当前表之外的所有表的选择。如果resetAll
为真则清除所有内容,否则忽略当前的。当前表的索引作为参数传递给执行清理操作的方法。
清除一切的呼吁如下所示:
clearSubTypeSettings(true,-1);
清除除当前之外的所有内容的调用如下所示:
clearSubTypeSettings(true, col);
上述方法的实现是这样的:
private void clearSubTypeSettings(boolean resetAll, int exceptControl) {
if (!resetAll) {
clearAllExceptCurrent(exceptControl);
} else {
clearAll();
}
}
现在这两种方法看起来几乎一样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);
}
}
我觉得我在这里编写了重复的冗余代码,将来会使维护复杂化。如何改进此代码并使其更加面向对象?