我刚刚对设计模式进行了更新,并试图将我遇到的真实世界示例映射到设计模式 例如:代理模式 -> WCF
通过中介者模式,企业服务总线浮现在脑海中,因此出现了这个问题。
最佳答案
在中介者模式中,"communication between objects is encapsulated with a mediator object."目标是通过将通信路由细节留在中介中来实现类中更高的凝聚力。对象直接耦合到中介,彼此松散耦合。
对我来说,它似乎比 GoF Mediator 更抽象,其示例往往与特定应用程序相关。例如,用户界面行为可能指定当用户单击列表中的项目时,应将单击的项目复制到文本框中。这种行为逻辑非常特定于应用程序,但如果它散布在协作类之间(例如,项目列表和文本框各自管理控件的某些部分),则很难维护该逻辑。分散该逻辑会使协作对象的凝聚力降低。 GoF Mediator 集中了这个应用程序逻辑,因此 Item List 不知道文本框等。
我将 ESB 视为提供路由服务,针对特定应用程序的行为对其进行自定义可能并不那么容易。例如,实体仍然需要了解彼此以进行通信,但细节已被抽象。行为在规则中定义。我可以将 ESB 视为通用中介,但提供通用性的抽象可能会使其比给定应用程序的 GoF 中介更难理解(最终缺乏凝聚力)。
ESB 更像是一种架构模式(通用服务),而中介者可以是一种非常特定于应用程序的模式。
关于design-patterns - ESB 是中介者模式的一个例子吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22425314/