sincerit 中介者模式(Mediator Pattern)

中介者模式跟观察者模式有些相似,观察者模式是一对多的模型,那么中介者就是多对多(复杂的网状)的模型,在实际生活中也有许多的例子,比如QQ聊天,QQ成员既是消息的发送者又是消息的接受者,这就有多对多的关系
在这里插入图片描述
中介者模式:主要特点就是多对多的关系,就如上面的QQ聊天,可以有多个人发消息(一个也是可以的),群所有成员都是消息接收者
中介者模式:有抽象中介者类AbstractMediator, 具体中介者类ConcreteMediator, 抽象成员类AbstractColleague, 具体成员类ConcreteColleague, 抽象是为了便于扩展
中介者模式:用一个中介对象(中介者)来封装一系列的对象交互,中介者模式使松耦合的,是对象行为型模式
中介者模式:实质是成员对象聚合了共同的一个中介者(抽象同事类聚合了),成员通过向中介者发消息使其他成员接受到该消息然后产生行为

中介者模式结构图:
在这里插入图片描述

观察者与中介者的区别在,同事类里面聚合了一个中介者变量,就是colleague到Mediator的一根线(原本是聚合关系的,找的图没画好)。

中介者模式中涉及的类:
Mediator:抽象中介者类,用于做中间传递消息的第三方,这里进行抽象,有一个抽象的方法子类实现其具体的业务,如QQ群, 具体业务就是向全体成员发送消息
Colleague:抽象同事类,把同事抽象出来便于扩展,这个抽象同事类,聚合了一个抽象中介者成员mediator,以及其他的需要的方法
ConcreteMediator: 具体中介者类,最主要的实现抽象中介者类的一个抽象方法,在上面的图是notify()
ConcreteColleague: 具体同事类,每一个成员都会有一个跟中介者打交道的方法,上面的图是talk()

案例举例:
。。.待续

猜你喜欢

转载自blog.csdn.net/sincerit/article/details/85055893