现实世界中使用 "Mediator pattern" 的例子是什么?
What is an example in the real world that uses the "Mediator pattern"?
有人可以给出一个用例示例,其中 "Mediator pattern" 在现实世界中有用吗?
The Gang of Four 喜欢从 GUI 中提取示例,因此他们的示例自然围绕 windows、按钮、文本窗格、列表框等展开。如果这些小部件中的每一个都直接与其他小部件通信,结果将是一个交流的蜘蛛网。限制每个小部件仅与单个中介通信可以简化通信模式。另请参阅此 answer 以获得类似的解释。
四人帮之外的例子,前两个answers to a question contrasting mediator with facade mention mediator as an effective pattern for logging. Also, Spring Guru提到了Spring框架中的一个例子。
In Spring MVC, there is a great example of the Mediator Pattern in action with how Spring MVC uses the Dispatcher Servlet in conjunction with the controllers.
可以将消息服务称为中介模式的实现。
假设我想让 Java 应用程序中的两个组件通过 JMS 进行通信 - 组件 A 向 JMS 提供程序发布包含某种指令的消息;组件 B 订阅该 JMS 提供程序以检索消息并执行指令。组件 A 正在通过中介与组件 B 通信。
还有更多例子here。
Mediator 是一种添加第三方对象以控制一组(2 个或更多)对象之间交互的方法。
您能找到的最简单的示例是 Chat Room 示例,您可以在其中看到 ChatRoom 对象控制 2 个(或更多)用户对象之间的交互。实际上,如果您看到像 Facebook 这样的 Web 应用程序,它会创建一个 web-socket 对于您打开的每个 聊天框。所以实际上网络套接字与中介(服务器)和客户端通信。当进行群聊时,每个客户端都使用专用网络套接字与服务器同步。
Radio Taxi 是中介者模式的一个例子。出租车司机与 Mediator(无线电出租车呼叫中心)沟通,而不是相互沟通。
当客户需要出租车时,他会致电 Radio Taxi Call Center。所有的出租车都有一个 GPS 装置,可以告诉出租车现在在哪里,还有一个中央信息系统,可以告诉哪辆出租车可以为客户服务。呼叫中心将联系离客户最近的可用出租车,并派他们为客户服务。
看看https://github.com/dstar55/100-words-design-patterns-java#Mediator
可以说,ESB(Enterprise Service Bus)本质上是Mediator模式的大规模应用。
另一个很好的例子是 RabbitMQ 开源消息代理库,它充当 "mediator" 供多个 clients/applications 使用它。
在这里,客户端或应用程序不知道所有消息将由谁使用。 RabbitMQ 充当中介并向订阅的客户端发布消息。
别忘了 Kafka,它也是一个很好的例子。
空中交通管制系统就是其中之一。
这种模式广泛应用于现实生活中,您希望避免多对多通信。
另一个现实世界的例子,我在印度婚礼的大多数情况下,新娘和新郎之间有一个调解人,他沟通双方,否则会有很多人互相拿走不同的东西,没有人不是知道完整的细节。所以,当有很多参与者想讨论一个话题并避免多次交流时,中介者模式就很有用了。
Facebook 或任何社交网站,很多人聚集在一起讨论一个话题,因此在这个 Facebook/Social 网站中扮演调解人的角色。
有人可以给出一个用例示例,其中 "Mediator pattern" 在现实世界中有用吗?
The Gang of Four 喜欢从 GUI 中提取示例,因此他们的示例自然围绕 windows、按钮、文本窗格、列表框等展开。如果这些小部件中的每一个都直接与其他小部件通信,结果将是一个交流的蜘蛛网。限制每个小部件仅与单个中介通信可以简化通信模式。另请参阅此 answer 以获得类似的解释。
四人帮之外的例子,前两个answers to a question contrasting mediator with facade mention mediator as an effective pattern for logging. Also, Spring Guru提到了Spring框架中的一个例子。
In Spring MVC, there is a great example of the Mediator Pattern in action with how Spring MVC uses the Dispatcher Servlet in conjunction with the controllers.
可以将消息服务称为中介模式的实现。
假设我想让 Java 应用程序中的两个组件通过 JMS 进行通信 - 组件 A 向 JMS 提供程序发布包含某种指令的消息;组件 B 订阅该 JMS 提供程序以检索消息并执行指令。组件 A 正在通过中介与组件 B 通信。
还有更多例子here。
Mediator 是一种添加第三方对象以控制一组(2 个或更多)对象之间交互的方法。
您能找到的最简单的示例是 Chat Room 示例,您可以在其中看到 ChatRoom 对象控制 2 个(或更多)用户对象之间的交互。实际上,如果您看到像 Facebook 这样的 Web 应用程序,它会创建一个 web-socket 对于您打开的每个 聊天框。所以实际上网络套接字与中介(服务器)和客户端通信。当进行群聊时,每个客户端都使用专用网络套接字与服务器同步。
Radio Taxi 是中介者模式的一个例子。出租车司机与 Mediator(无线电出租车呼叫中心)沟通,而不是相互沟通。
当客户需要出租车时,他会致电 Radio Taxi Call Center。所有的出租车都有一个 GPS 装置,可以告诉出租车现在在哪里,还有一个中央信息系统,可以告诉哪辆出租车可以为客户服务。呼叫中心将联系离客户最近的可用出租车,并派他们为客户服务。
看看https://github.com/dstar55/100-words-design-patterns-java#Mediator
可以说,ESB(Enterprise Service Bus)本质上是Mediator模式的大规模应用。
另一个很好的例子是 RabbitMQ 开源消息代理库,它充当 "mediator" 供多个 clients/applications 使用它。
在这里,客户端或应用程序不知道所有消息将由谁使用。 RabbitMQ 充当中介并向订阅的客户端发布消息。
别忘了 Kafka,它也是一个很好的例子。
空中交通管制系统就是其中之一。
这种模式广泛应用于现实生活中,您希望避免多对多通信。
另一个现实世界的例子,我在印度婚礼的大多数情况下,新娘和新郎之间有一个调解人,他沟通双方,否则会有很多人互相拿走不同的东西,没有人不是知道完整的细节。所以,当有很多参与者想讨论一个话题并避免多次交流时,中介者模式就很有用了。
Facebook 或任何社交网站,很多人聚集在一起讨论一个话题,因此在这个 Facebook/Social 网站中扮演调解人的角色。