有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java观察特定类型的事件

我在JavaEE中使用观察者模型,其想法是让一个服务向多个观察者触发事件。然而,尽管所有的观察者都在听同一个事件,但他们中的每一个人都只对特定的事件类型感兴趣,这是在一个事件中指定的。我当前的代码是这样的:

public class Service {
    public void fireEvent(EventType type) {
        MyEvent event = new MyEvent(type);
        fire(event);
    }
}

public class TypeAObserver {
    public void observeEvent(@Observes MyEvent event) {
        if (EventType.TYPE_A.equals(event.getType()) {
            // do something
        }
    }
}

public class TypeBObserver {
    public void observeEvent(@Observes MyEvent event) {
        if (EventType.TYPE_B.equals(event.getType()) {
            // do something
        }
    }
}

如您所见,所有观察者在进行进一步操作之前都必须检查类型,这增加了源代码内部的重复。此外,由于所有观察者都将接收相同的事件,而实际处理该事件的人却寥寥无几,我担心这会带来不必要的性能开销

因此,我正在寻找其他方法,最好不使用JavaEE之外的任何新库,让每个观察者只听特定类型的事件


共 (0) 个答案