首页 > 解决方案 > 中介者模式 - 关于同事的问题

问题描述

这是我的第一篇文章,描述这个问题对我来说很困难。

我相信我完全理解中介者模式。我的问题更多是关于技术性的。

我有一名调解员和 3 名同事 (C1-3)。

中介者向/从 C1 发送和取回消息。它也向/从 C2 发送和取回消息。但是对于 C3,它只发送一条消息,不接收任何消息。

C1 和 C2 显然是同事。但从 [Java] 编码的角度来看,C3 不必是同事。它从不回调中介,因此它从不使用中介字段。这是继承所能给予的唯一东西,所以给予它在某种程度上是没有意义的。

但另一方面,Mediator 确实使用 C3,所以我们是否需要让同事明确这一点?

我想知道这个问题是否有技术答案,或者这只是一个意见问题。

标签: design-patternsmediator

解决方案


GoF 书说,(第 277 页)

每个同事类都知道它的 Mediator 对象。

这种关系在几张图中清楚地显示出来。

中介结构

现在,让 Mediator 单向调用另一个对象肯定没有问题。这可能是同事发起的呼叫的一种副作用。但接收该副作用调用的对象本身不会被视为同事。它只是应用程序中的另一个对象,而不是 Mediator 设计模式的一部分。

考虑一下,除非应用程序中的每个对象都是同事,否则信息必须通过某种方式传入和传出模式,因此在某个时候将消息发送给非同事是有意义的。


推荐阅读