【发布时间】:2013-03-06 23:58:55
【问题描述】:
最好的Java 接口或可用作通用回调机制的类似模式应该是什么?
例如,它可能是这样的
public interface GenericCallback
{
public String getID();
public void callback(Object notification);
// or public void callback(String id, Object notification);
}
在覆盖 hashCode() 方法的情况下需要 ID,以便被调用者识别调用者。
像上面这样的模式对于需要向类报告它们是从某个条件(例如,处理结束)产生的类的对象很有用。
在这种情况下,“父”类将使用每个GenericCallback 对象的getID() 方法在Map<String, GenericCallable> 中跟踪它们,并根据收到的通知添加或删除它们。
还有,这样的接口到底应该怎么命名呢?
许多人似乎更喜欢Java Observer pattern,但那里定义的Observable class 并不方便,因为它不是规避单一继承的接口,而且它具有比上述简单场景实际需要的更多功能。
【问题讨论】:
-
呃,
Observerdocs.oracle.com/javase/7/docs/api/java/util/Observer.html 和Observabledocs.oracle.com/javase/7/docs/api/java/util/Observable.html 怎么样? -
“在覆盖 hashCode() 方法的情况下需要 ID,以便被调用者识别调用者。”我不明白这部分
-
如果您有一个带有 hashCode() 方法的“可观察”对象,该方法根据对象状态更改其返回值,并且您跟踪 HashMap 中的所有可观察对象(例如,能够在所有这些对象完成执行时断言),那么您将无法匹配任何跟踪的 observable。
-
最好使用特定的、有意义的类型,而不是一般的、无意义的类型。