首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >中介者模式-关于同事的问题

中介者模式-关于同事的问题
EN

Stack Overflow用户
提问于 2021-10-05 03:33:26
回答 2查看 45关注 0票数 2

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

我相信我完全理解Mediator模式。我的问题更多的是关于技术上的。

我有一个中介人和3个同事(C1-3)。

中介器将消息发送到C1或从中获取消息。它也可以向C2发送消息,也可以从well服务器接收消息。但使用C3时,它只发送一条消息,并且不接收任何消息。

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

但是另一方面,中介者确实使用了C3,那么我们需要让它成为一个同事来说明这一点吗?

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

EN

回答 2

Stack Overflow用户

发布于 2021-10-06 14:45:44

GoF的书上说,(第277页)

每个同事类都知道它的中介器对象。

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

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

请考虑,除非应用程序中的每个对象都是同事,否则必须有某种方式让信息进出模式,因此在某个时刻将消息发送给非同事是有意义的。

票数 1
EN

Stack Overflow用户

发布于 2021-10-05 15:26:06

我猜您指的是中介器示例from Wikipedia,它使用同事类和子类进行演示。

实际上,我认为这个例子相当混乱,因为它是过度设计的。中介器模式实际上与继承没有任何关系( nothing )。中介器的要点是,有一些对象需要相互通信,但只能通过中介器对象间接通信。如果在您的示例中,所需的与C3的通信只是单向的,那也没问题,如果不需要,则不需要保留对中介对象的引用。

还请注意,软件设计中没有“规则”或“法则”要求您需要完全按照GoF书中介绍的方式实现设计模式-如果更简单或部分解决方案足够,请继续- GoF设计模式是如何实现的建议,不多也不少。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69444619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档