有人可以提供一个用例示例“Mediator模式”在现实世界中有用吗?
答案 0 :(得分:5)
Mediator是一种添加第三方对象以控制一组(2个或更多)对象之间的交互的方法。
您可以找到的最简单的示例是Chat Room示例,您可以在其中看到ChatRoom对象控制2个(或更多)User对象之间的交互。实际上,如果你看到像 Facebook 这样的网络应用程序,它会为每个人创建一个 web-socket 您打开 聊天框 。实际上,web-socket与中介(服务器)和客户端进行通信。当群聊发生时,每个客户端使用专用的Web套接字与服务器同步。
答案 1 :(得分:3)
Radio Taxi是Mediator模式的一个例子。出租车司机与调解员(无线电出租车呼叫中心)进行沟通,而不是相互沟通。
当客户需要出租车时,他打电话给无线电出租车呼叫中心。所有的出租车都有一个GPS单元,告诉出租车现在在哪里,还有一个中央信息系统,告诉哪个出租车可以为客户服务。呼叫中心将联系最靠近客户所在地的可用出租车,并将其发送给客户。
查看https://github.com/dstar55/100-words-design-patterns-java#Mediator
答案 2 :(得分:2)
对于Gang of Four之外的例子,前两个问题answers对比一个与门面对比的问题,提到调解员是一个有效的记录模式。另外,Spring Guru在Spring Framework中提到了一个例子。
在Spring MVC中,有一个很好的Mediator模式示例,它介绍了Spring MVC如何将Dispatcher Servlet与控制器结合使用。
答案 3 :(得分:1)
可以将消息传递服务称为中介模式的实现。
假设我希望Java应用程序中有两个组件通过JMS进行通信 - 组件A向JMS提供程序发布包含某种指令的消息;组件B订阅该JMS提供程序以检索消息并执行指令。组件A通过中介与组件B通信。
还有更多示例here。
答案 4 :(得分:1)
可以说ESB(企业服务总线)本质上是Mediator模式的大规模应用。
答案 5 :(得分:0)
另一个很好的例子是RabbitMQ开源消息代理库,它充当使用它的多个客户端/应用程序的“中介”。
在这里,客户端或应用程序不知道所有消息将由谁消费。 RabbitMQ充当中介并向订阅的客户端发布消息。
答案 6 :(得分:0)
别忘了Kafka,这也是一个很好的例子。
答案 7 :(得分:0)
空中交通管制系统是其中之一。
这种模式广泛用于现实生活中,在这种情况下您要避免多对多交流。
另一个现实世界的例子,在印度婚礼中,大多数情况下,新娘和新郎之间有一个调解人,双方可以互相沟通,否则会有很多人互相牵涉,彼此间有不同的事情,没有人不知道完整细节。因此,当有很多参与者想要讨论一个主题并避免许多交流时,调解员模式会很有用。
Facebook或任何有很多人聚在一起谈论话题的社交网站,因此在这个Facebook /社交网站中扮演调解人的角色。