1

我有以下设计:
我有一系列处理一些对象的类,比如说事件。
每个类只处理一种特定类型的事件。
现在,当我有这些需要处理的对象/事件时,我会遍历所有事件,然后遍历所有处理器,直到完成。
我所做的唯一优化是,如果一个事件不适合类立即返回。
我怎样才能改变我的设计来摆脱这个O(N^2)循环?或者也许它不值得改变,这样就可以了?

更新
示例算法代码:

for(Event e:events) {  
    for(Processor p:processors) {  
        p.process(e); 
    }  
}  
4

2 回答 2

5

您可以实现观察者模式。每个处理器都会观察对象并监听事件。处理器将根据事件的类型决定是否处理该事件。

Java 实际上有两个明确用于此模式的接口:ObservableObserver.

于 2013-06-27T19:57:25.277 回答
0

如果您对每种事件类型都有一个特定的处理器,您可以创建一个 Map (EventClass -> EventProcessor),然后您现在可以删除一个循环 - O(N)。

于 2013-06-27T19:58:18.057 回答