中介

    中介模式(Mediator)又称调停者模式,它的目的是把多方会谈变成双方会谈,从而实现多方的松耦合。

    有些童鞋听到中介立刻想到房产中介,立刻气不打一处来。这个中介模式与房产中介还真有点像,所以消消气,先看例子。

    考虑一个简单的点餐输入:

    选择全部取消所有反选

    这个小系统有4个参与对象:

    • 多选框;
    • “选择全部”按钮;
    • “反选”按钮。

    所以这是一个多方会谈,逻辑写起来很复杂:

    如果我们引入一个中介,把多方会谈变成多个双方会谈,虽然多了一个对象,但对象之间的关系就变简单了:

    下面我们用中介模式来实现各个UI组件的交互。首先把UI组件给画出来:

    然后,我们设计一个Mediator类,它引用4个UI组件,并负责跟它们交互:

    使用Mediator模式后,我们得到了以下好处:

    • 各个UI组件互不引用,这样就减少了组件之间的耦合关系;
    • 如果新增一个UI组件,我们只需要修改Mediator更新状态的逻辑,现有的其他UI组件代码不变。

    Mediator模式经常用在有众多交互组件的UI上。为了简化UI程序,MVC模式以及MVVM模式都可以看作是Mediator模式的扩展。

    从下载练习:使用Mediator模式 (推荐使用快速下载)

    中介 - 图1