ESB是Mediator模式的一个例子吗?

时间:2014-03-15 14:54:10

标签: design-patterns esb mediator

我只是对设计模式感到兴奋,并试图绘制我遇到的现实世界的例子来设计模式 例如:代理模式 - > WCF

通过Mediator模式,企业服务总线浮现在脑海中,因此问题就出现了。

1 个答案:

答案 0 :(得分:2)

在Mediator模式中,"communication between objects is encapsulated with a mediator object."目标是通过将通信路由详细信息留在中介中来实现更高的内聚力。物体直接耦合到介体并且彼此松散地耦合。

在企业服务总线架构中,"all customer services communicate in the same way with the ESB: the ESB translates a message to the correct message type and sends the message to the correct producer service."

对我来说,它似乎比GoF Mediator更抽象,GoF Mediator的例子往往与特定的应用程序有关。例如,用户界面行为可能指定当用户单击列表中的项目时,应将单击的项目复制到文本框中。这种行为逻辑非常适用于应用程序,但如果它在协作类之间传播(例如,项目列表和文本框各自管理控件的某些部分),则难以维持该逻辑。扩展该逻辑使得协作对象不那么紧密。 GoF Mediator集中了这个应用程序逻辑,因此项目列表不了解文本框等。

我认为ESB提供了路由服务,为特定应用程序的行为定制它可能并不容易。例如,实体仍然需要彼此了解通信,但细节已被抽象。行为在规则中定义。我可以看到ESB是一个通用的Mediator,但是提供一般性的抽象可能会使得比给定应用程序的GoF Mediator更难理解(最不具有凝聚力)。

ESB更像是一种架构模式(通用服务),而Mediator可以是一种特定于应用程序的模式。