我想通過傳入運算符來減少代碼,但我不知道如何執行此操作。例如,在下面的兩個功能,都具有相同的代碼只是一個不到VS大於號傳入Java中的運算符
private int findMin(int[] a){
int min =a[0];
for (int val : a){
if (val<min){
min=val;
}
}
}
private int findMax(int[] a){
int max =a[0];
for (int val : a){
if (val>max){
min=val;
}
}
}
我在想一個解決方案,以減少代碼將創建一個名爲可執行文件,聲明方法的接口執行(int a,int b)返回一個布爾值。 然後我可以創建兩個實現,一個執行<,另一個執行>。喜歡的東西:
private int find(int[] a, Executable myOp){
int cur =a[0];
for (int val : a){
if (myOp.execute(val,cur)){
cur=val;
}
}
}
private int findMax(int[] a){
GreaterThan g = new GreaterThan();
find(a, g)
}
private int findMin(int[] a){
LessThan g = new LessThan();
find(a, g)
}
*其中GREATERTHAN和每種不超過執行可執行
我承認這是我的例子完全是不必要的,但我可以看到更復雜的例子,其中將是有益的改變創造額外的功能單一「操作」。我是如何描述處理我的困境的標準方法還是我應該考慮的其他事情?