Banq,请教一下关于异步事件监听模式

您曾经说过:”事件监听异步模式在Source和Listener之间引入event queue,
event queue是一个基于事件的publish-subscribe. 它一种松耦合方式提供不同模块和角色之间异步通讯。它比同步更加松耦合,这样,我们就把Source-Listener改成了publish-queue-subscribe方式。“

能解释一下那个event queue这个的作用,有点不太清楚,这个队列怎么和Source,Listener关联。能不能用一点代码解释一下。


public class QueueMessageProcessor {
private LinkedBlockingQueue queue;

public QueueMessageProcessor() {
queue = new LinkedBlockingQueue();
}

//publisher调用本方法
public void addMessage(Object o) {
queue.add(o);
}

//subscriber调用本方法
public Object getMessage() {
try {

return queue.take();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}

}


LZ这个queue的核心作用是彻底分割source 和 listener。由于和他们直接沟通的对象变成了queue这样就没有人需要关心“我的数据给谁”和“谁给我提供数据”这样的问题了。

在做系统设计的时候“除非必要,什么都不要知道,什么都不要假设”是一个基本的原则。

谢谢banq的指点,豁然开朗。
感谢IceQi。
这个event queue扮演的就是那个中介者的角色,将Source和Listener关联起来。
to--IceQi
在做系统设计的时候“除非必要,什么都不要知道,什么都不要假设”是一个基本的原则。
这应该就是那个著名的”不要和陌生人说话“--迪米特原则吧。