我重構了我的代碼的一些部分,其中一個有回調函數。我並不確定回調的相關性,因爲它引入了緊密耦合。回調和緊耦合
讓我給你舉個例子:
public class SimpleExample {
OtherClass oc;
Callback callback;
...
public void register(Callback c) {
this.callback = c;
}
public void doStuff() {
callback.push(oc);
}
...
}
接口:
public interface Callback {
public void push(OtherClass oc);
}
接口的實現:
public CallbackImpl implements Callback {
HashMap<OtherClass, String> map;
...
public void push(OtherClass oc) {
String s = map.get(oc);
System.out.println(s);
}
...
}
主要的問題,我看到的是我的接口使用OtherClass作爲函數參數。值得一提的是,OtherClass不是一個接口。所以我的第一個意思是用接口重構這個類。這是一個不錯的選擇嗎?
它取決於'OtherClass'的可見性範圍。如果它是一個非常公共的對象(例如'String'),那麼沒有必要替換它。如果你打算可能有多個'OtherClass'的實現,那麼替換是一個不錯的選擇,否則'Callback'的任何消費者都需要一個'OtherClass'的實例。 – hotzst