如何将双循环处理转换为更好的处理?

时间:2013-06-27 19:54:27

标签: java algorithm design-patterns data-structures

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

更新
算法代码示例:

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

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:0)

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