设计模式之中介者模式、调停者模式、迪米特法则

本文介绍了设计模式中的中介者模式,解释了其定义、使用背景,并通过联合国与各国的关系作为例子进行说明。中介者模式用于减少对象间的耦合,将复杂的网状结构转化为星形结构,以中介者为中心。文章还探讨了中介者模式的结构、代码实现、实际应用,并讨论了其带来的好处和潜在的维护复杂性问题。同时提到了迪米特法则,强调了通过中介减少对象直接交互的重要性。

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

1. 定义

中介者模式(Mediator):用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互

简单来说,就是对象之间彼此不联系,而是通过中介来间接联系的,举个例子,联合国就是一个中介,没有联合国之前,各个国家成立彼此的组织,有联合国之后,所有国家与联合国联系,通过联合国与其他国家进行发声

或者再比如,房东和租客是不认识的,租客找到房东租房子是通过中介来的,租客先找到中介,表达意愿,然后中介再联系相应的房东,达到了间接联系的作用

2. 使用背景

当我们有许多对象彼此纠缠联系时,这就要求对象之间需要知道其他所有对象,尽管将一个系统分割成许多对象通常可以增加其可复用性,但是对象间相互连接的激增又会降低其可复用性了

因为大量的连接使得一个对象不可能在没有其他对象的支持下工作,系统表现为一个不可分割的整体,所以,对系统的行为进行任何较大的改动就十分困难了

这个时候,可以运用迪米特法则,即如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者(中介)转发这个调用。
也就是中介者模式的运用

在上述联合国的例子里,国与国之间完全可以通过‘联合国’这个中介者来发生关系,而不用直接通信。

通过中介者对象,可以将系统的网状结构变成以中介者为中心的星形结构,每个具体对象不再通过直接的联系与另一个对象发生相互作用,而是通过‘中介者’对象与另一个对象发生相互作用。中介者对象的设计,使得系统的结构不会因为新对象的引入造成大量的修改工作

3. 中介者模式的结构图与模板

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4. 个人用流程图理解

在这里插入图片描述

5. 使用中介者模式的例子

题目:
联合国组织旗下的安理会,希望通过其安理会本身以中介的身份对美国和伊拉克进行交流,而不是让其彼此通信

结构图:
在这里插入图片描述
代码:

  1. 抽象联合国类
//抽象联合国类
    abstract class UniteNations
    {
   
        public abstract void Declare(string message,Country country);
    }
  1. 具体中介
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值