這是某種設計模式問題,我想。如何在Java中抽象不同的返回類型?
我想爲幾個操作(輸入+處理邏輯+輸出)建模爲實現某個IOperation接口的類。
每個操作可能有不同的輸入參數和不同的輸出參數。
我可以使用每個構造函數爲每個操作指定不同的輸入。
但我想以正交的方式爲每個類獲得不同的輸出,而不必將接口轉換爲具體的類。
對此的明顯方法是將[1]投射到具體類並調用返回所需結果的特定方法,或[2]將結果包裝到某個OperationResult對象中,而這又會需要向下轉換或一些元數據信息+提取器代碼。
我想避免處理反射或向下轉換或元數據解釋。
在Java中有這種情況的任何已知設計嗎?這將是一個很好的方法?
更新 - @Laf,這裏有一些具體的例子。我想提取「C」
interface IOperation{
void execute();
}
public class AddOp implements IOperation{
private int a;
private int b;
private int c;
public AddOp(int a, int b){
this.a = a;
this.b = b;
}
@Override
public void execute() {
this.c = this.a + this.b;
}
}
public class AndOp implements IOperation{
private boolean a;
private boolean b;
private boolean c;
public AndOp(boolean a, boolean b){
this.a = a;
this.b = b;
}
@Override
public void execute() {
this.c = this.a && this.b;
}
}
您是否考慮過使用泛型? – Laf
聽起來不錯。 @Laf什麼是你的方法與泛型? – Leo
回答Noor,這是真的,但如果我沒有在這個接口中的每種不同類型的結果的方法,我不得不倒下它到具體的實現。(-1不是我 - 我不會downvote我自己的問題的答案) – Leo