模拟订阅服务所需的模式

时间:2010-12-27 23:06:54

标签: java design-patterns

发布B,C和D对象有兴趣知道的东西,E,F和G不关心它。

当A说某些东西时,只有B,C,D应该得到这个“消息”。

什么设计模式有助于最好地模仿这个?

** 如何在不使用Tibco的情况下使用Tibco?

3 个答案:

答案 0 :(得分:1)

如果是普通的J2SE应用程序,事件的发布者和事件的订阅者是同一进程空间中的对象,那么它就是Observer模式。

订阅者通常会通过调用addListener()等特定方法并实现特定接口来通知发布者他们想要监听事件。

所以在你的例子中假设我们创建一个接口NumberEventListener,它有一个方法onNumberEvent(int number)

您的侦听器都将实现NumberEventListener并在您的发布者对象上调用addListener()。

可以在发布者方或听众方应用过滤。因此,对于您的实现,您可以将addListener()方法设置为addListener(NumberEventListener listener,int min,int max),并且只有在数字介于min和max之间时才会调用侦听器。然而,这不是典型的实现,因为它使发布者代码更复杂,并且您实际上不能灵活。

在这样的例子中,通常听众会收到所有相应的事件,并丢弃他们不感兴趣的事件。但是,这取决于实际的现实场景。

侦听器是否“同时”或顺序通知取决于侦听器是按顺序调用还是由事件的发布者在单独的线程中调用。

答案 1 :(得分:0)

如何发布 - 订阅消息交换模式?

在企业集成模式中也称为发布/订阅频道: http://www.eaipatterns.com/PublishSubscribeChannel.html

在Java中,JMS通常提供这样的消息传递服务。

答案 2 :(得分:0)

观察者模式。

或者,可以应用过滤器链模式,正如您所提到的,某些对象会根据消息的内容执行某些操作。这对我来说听起来像是一个过滤器链。