我重构了我的代码的一些部分,其中一个有回调函数。我并不确定回调的相关性,因为它引入了紧密耦合。回调和紧耦合
让我给你举个例子:
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