【发布时间】:2013-08-01 01:24:40
【问题描述】:
假设我有一个多维数组作为类的成员和许多方法,它们循环遍历数组的每个元素,然后对其进行操作。代码可能如下所示:
public class Baz {
private Foo[][] fooArray = new Foo[100][100];
public Baz() {
for (int i = 0; i < fooArray.length; i++) {
for (int j = 0; j < fooArray[i].length; j++) {
// Initialize fooArray
}
}
}
public void method1() {
for (int i = 0; i < fooArray.length; i++) {
for (int j = 0; j < fooArray[i].length; j++) {
// Do something with fooArray[i][j]
}
}
}
public void method2() {
for (int i = 0; i < fooArray.length; i++) {
for (int j = 0; j < fooArray[i].length; j++) {
// Do something else with fooArray[i][j]
}
}
}
// and so on
}
现在,由于循环的代码始终相同,只有循环内的操作发生了变化,有没有什么办法可以将循环的代码重构为一个单独的方法?能做就太好了
doInLoop(functionToExecute());
如果可能的话,最接近的替代方法是什么?
【问题讨论】:
标签: java loops refactoring command-pattern