当Pub / Sub Messaging消除模块的界面时该怎么办?

时间:2015-04-22 14:21:00

标签: design-patterns architecture publish-subscribe eventaggregator

当我使用Prism的EventAggregator实现“松散耦合”的消息传递方法时,我遇到了一个有趣的场景:一个没有公共接口的类;它的所有输入和输出都是通过这些幕后的pub / sub事件完成的。如果我要在另一个项目中重用这个类,我会查看公共接口,看看它提供了什么功能以及它的依赖项。但在这种情况下没有任何东西(除了事件聚合器服务)。我必须查看课程内部以查看它正在订阅哪些事件,以及它发布的事件以了解它如何适应周围环境......否则它只是坐在那里而什么也不做。

这是pub / sub模式的缺点 - 缺乏发现能力吗?

2 个答案:

答案 0 :(得分:3)

接口隐藏了实现细节以及我们使用它们的原因,但同时它们在组件之间创建耦合

发布/订阅模式尝试消除耦合,因此您无法使用任何形式的接口。是的,这是一个缺点。

此外,在您的情况下,如果您想使用接口重用Pub / Sub和其他使用者的逻辑,您可以提取常用的接口方法,然后从您的私有Pub / Sub侦听器调用这些方法。

答案 1 :(得分:1)

作为依赖项,它是否有正在侦听的队列?那种定义了它的界面。