sincerit 中介者模式(Mediator Pattern)

本文深入探讨了中介者模式,一种对象行为型模式,主要用于封装多对多对象交互,通过一个中介对象来协调多个同事对象之间的通信,从而降低系统复杂度。以QQ群聊为例,详细解释了中介者模式的构成,包括抽象中介者类、具体中介者类、抽象同事类和具体同事类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

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

案例举例:
。。.待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值