1.概述
该模式在Head First中没有介绍,它用于通过一个中介者完成对象间通信的解耦。当代码中出现大量有着其他对象信息的对象时就可以使用这个模式。
在这个模式中,有如下的参与者:
中介者(Mediator):抽象定义了“同事”(colleagues,稍后有定义)们通信的接口。
具体中介者(Concrete Mediator):实现了“同事”间的通信接口。
同事(Colleague):参与通信的实体抽象。
具体同事(Concrete Colleague):实现的参与通信的实体。
简单的说,通过同事持有中介者(其中完成了同事间通信的接口)的引用而实现了同事间的通信。
其中,中介者和同事的抽象并不是必须的,只是为了面向接口编程的抽象需要。
2.实例
我们用一个原型系统简单演示一下这个模式
首先我们定义一个抽象中介者,其中有通信接口Send:
然后我们对其进行实现:
中介者里有通信的双方同事,在同事里有一个Notify方法,表示提示收到一个消息。
然后我们定义一个抽象同事类:
同事类中要持有中介者的引用。
进而我们定义两个具体的同事:
现在我们开始使用这个中介者完成两个同事间的通信:
3.UML总结