我有以下设计:
我有一系列的类来处理一些对象让我们说事件
每个类只处理特定类型的事件
现在,当我有这些需要处理的对象/事件时,我遍历所有事件,然后遍历所有处理器,直到我完成为止
我做的唯一一个优化是,如果一个事件不适合一个类立即返回。
我怎么能改变我的设计摆脱这个O(N^2)
循环?或者它可能不值得改变,这是好的吗?
更新
算法代码示例:
for(Event e:events) {
for(Processor p:processors) {
p.process(e);
}
}
答案 0 :(得分:5)
您可以实现Observer模式。每个处理器都会观察对象并监听事件。处理器将根据事件的类型决定是否处理事件。
Java实际上有两个明确适用于此模式的接口:Observable
和Observer
。
答案 1 :(得分:0)
如果您有针对每种事件类型的特定处理器,您可以创建Map(EventClass - > EventProcessor),然后您可以删除一个循环 - O(N)。