中介者模式(Mediator)

意图

用一个中介对象来封装一系列的对象交互。

中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。

适用性

在下列情况下使用中介者模式:

示例一:通用源代码

1566898141019

1566898170178

示例二:用中介者模式表现MVC架构

在中介者中保存了两个Colleague对象,如果说我们现在展示的不是MVC,而是MVVM框架,那么就会有更多的实例保存在终结者中。这个是无法避免的,中介者必须拥有所有的协同者。

1566898195489

1566898220263

View出现了状态的改变,但它不需要知道有谁需要因此而做什么事情,只需要告诉中介者即可,Model亦然。两者存在着数据和信息的交换,但是又不知道彼此,一个中介者将两者完美地解耦了。输出:

----
View got a click action.
Model should return some data to view.
View got data from model.
----
Model will shutdown in 5 sec.
View knows that: Model gonna shutdown, backup your data.