【发布时间】:2014-02-27 11:09:02
【问题描述】:
我经常遇到在多对多关系中选择交互模式的问题。以下示例演示了实现同一目标的四种不同方法。
目标是将消息(广告)从一组实体(DeliveryCompany、College、Supermarket)传递到另一组实体(LazyBob、CleverAnn、FastJon)。显然,我们需要一个调解员 (AdBoard) 来帮助发布商将广告投放给合适的人,并帮助订阅者通知他们感兴趣的提案。
现在对广告做出回应是出于顾虑,但如果它很重要,我们可以假设将来有必要这样做。无论如何,这个响应必须有不同的路径(我们不是用另一个广告来响应广告,对吧?)
第一:
所有订阅者都必须实现描述其差异的接口。中介者被注入它们并为发布者实现一个接口。
第二:
第一个的反转版本。现在发布者实现了一个描述他们偏好的接口。它由为订阅者实现接口的中介使用。
第三:
Mediator 实现了两个接口:用于发送有针对性的广告(后端)和用于接收有关有趣主题的广告(前端)。后端注入所有发布者,前端注入所有订阅者。
第四:
第三个的反转版本。现在中介者被注入了许多实现其接口的发布者和订阅者。
问题:
这些变体是否同样成功地达到了目标?
在开发的早期阶段,可以毫无疑问地选择每一个,对吗?如果不是,选择的算法是什么?
【问题讨论】:
-
你能解释一下它们的区别吗?您不确定的决定是什么?
-
图表中的差异应该很清楚,但我会在一分钟内添加一些解释。我不确定该选择哪一个。我应该掷硬币两次吗?你会怎么做?
标签: oop design-patterns class-diagram mediator