【发布时间】:2010-11-09 00:02:17
【问题描述】:
我目前有一个 Java Observer/Observable 设置,我在其中打开 Observer.update 的 Object 参数中的某些字段(例如事件 ID)以确定如何处理 Observable 通知。
这会创建像这样的详细代码:
public void update (Observable o, Object arg) {
if (arg instanceof Event) {
switch (((Event)arg).getID()) {
case EVENT_TYPE_A:
// do stuff...
break;
case EVENT_TYPE_B:
// do stuff...
break;
case EVENT_TYPE_C:
// do stuff...
break;
}
}
}
来自 ActionScript 背景,这对我来说是不必要的冗长...与其传递 Observer 的实例,我更愿意传递一个回调方法以由 Observable 直接调用(更具体地说,由子类调用) )。但是,我不清楚如何确定应该调用该方法的对象(“拥有”该方法的类实例)。
我可以传递对包含该方法的实例的引用,但这听起来像糟糕的 OOP。
我是在叫错树吗?还是有一种干净的方法来实现这一点?
【问题讨论】:
-
我看到了你的困境;这不是观察者模式。见stackoverflow.com/questions/5423125/…
标签: java events actionscript observer-pattern