`

Mediator(中介者)---对象行为型模式

阅读更多

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

面向对象设计鼓励将行为分布到各个对象中。这种分布可能会导致对象间有许多连接。在最坏的情况下,每一个对象都知道其他所有对象。

可以通过将集体行为封装在一个单独的中介者对象中以避免这个问题。中介者负责控制和协调一组对象间的交互。中介者充当一个中介以使组中的对象不再相互显式引用。这些对象仅知道中介者,从而减少了相互连接的数目。

窗口组件间的通信都通过导控者间接地进行。它们不必互相知道,它们仅需知道导控者。而且,由于所有这些行为都局部于一个类中,只要扩展或替换这个类,就可以改变和替换这些行为。

 

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

1、一组对象以定义良好但是复杂的方式进行通信。产生的相互依赖关系结构混乱且难以理解。

2、一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象。

3、想定制一个分布在多个类中的行为,而又不想生成太多的子类。

 

同事向一个中介者对象发送和接收请求。中介者在各同事间适当地转发请求以实现协作行为。

 

中介者模式有以下优点和缺点:

1、减少了子类生成。Mediator将原本分布于多个对象间的行为集中在一起。改变这些行为只需生成Mediator的子类即可。这样各个Colleague类可被重用。

2、它将各Colleague解耦。Mediator有利于各Colleague间的松耦合,你可以独立的改变和复用各Colleague类和Mediator类。

3、它简化了对象协议。用Mediator和各Colleague间的一对多的交互来代替多对多的交互。一对多的关系更易于理解、维护和扩展。

4、它对对象如何协作进行了抽象。将中介作为一个独立的概念并将其封装在一个对象中,使你将注意力从对象各自本身的行为转移到它们之间的交互上来。这有助于弄清楚一个系统中的对象是如何交互的。

5、它使控制集中化。中介者模式将交互的复杂性变为中介者的复杂性。因为中介者封装了协议,它可能变得比任一个Colleague都复杂。这可能使得中介者自身成为一个难于维护的庞然大物。

 

当各Colleague仅与一个Mediator一起工作时,没有必要定义一个抽象的Mediator类。Mediator类提供的抽象耦合已经使各Colleague可与不同的Mediator子类一起工作,反之亦然。

当一个感兴趣的事件发生时,Colleague必须与其Mediator通信。一种实现方法是使用Observer模式,将Mediator实现为一个Observer,各Colleague作为Subject,一旦其状态改变就发送通知给mediator。Mediator做出的响应是将状态改变的结果传播给其他的Colleague。另一个方法是在Mediator中定义一个特殊的通知接口,各Colleague在通信时直接调用该接口。当与Mediator通信时,Colleague将自身作为一个参数传递给Mediator,使其可以识别发送者。

 

Facade模式与中介者模式的不同之处在于它是对一个对象子系统进行抽象,从而提供了一个更为方便的接口。它的协议是单向的,即Facade对象对这个子系统类提出请求,但反之则不行。相反,Mediator提供了各Colleague对象不支持或不能支持的协作行为,而且协议是多向的。

 

Colleague可使用Observer模式与Mediator通信。

分享到:
评论

相关推荐

    (行为型模式) Mediator 中介者模式

    C#面向对象设计模式 (行为型模式) Mediator 中介者模式 视频讲座下载

    C#面向对象设计模式纵横谈(17):(行为型模式) Mediator 中介者模式

    标题和描述均提到了"C#面向对象设计模式纵横谈(17):(行为型模式) Mediator 中介者模式",这明确指向了一个特定的设计模式——中介者模式(Mediator Pattern),并且是在C#语言环境下的应用。下面将详细阐述这一设计...

    C#面向对象设计模式纵横谈(17):(行为型模式) Mediator 中介者模式 (Level 300)

    中介者模式通过引入一个中介对象,将这些对象的通信过程集中管理,使得各个对象只需要与中介者交互,而不需要知道其他对象的具体实现细节。 中介者模式包含以下关键角色: 1. **中介者(Mediator)**:这是核心组件...

    设计模式专题之(十七)中介者模式---设计模式中介者模式示例代码(python--c++)

    **中介者模式**是软件设计模式中的一种结构型模式,它的主要目的是降低多个对象之间的复杂交互,通过引入一个中介对象来统一这些交互。在实际应用中,当对象间的交互变得日益复杂,导致类与类之间的关系过于紧密时,...

    设计模式之中介者模式(Mediator)

    在中介者模式中,一个中介对象协调多个对象之间的交互,避免了对象之间复杂的相互依赖关系,使得系统更加易于理解和管理。 **一、中介者模式的核心概念** 1. **中介者(Mediator)**:这是模式中的核心角色,它...

    设计模式之中介者模式(Mediator Pattern)

    中介者模式是行为设计模式之一,其主要目的是降低多个对象之间的复杂性,通过引入一个中介对象来协调这些对象的交互。这种模式有助于减少对象之间的耦合,使得各个对象可以独立地进行修改和扩展。 **概念理解** 1....

    中介者模式(mediator)

    综上所述,中介者模式在软件设计中扮演着重要角色,通过引入一个中介对象,它有效地降低了对象间的耦合,提高了代码的可维护性和可扩展性。在实际项目中,我们可以根据需求灵活运用中介者模式,优化系统结构。

    c++设计模式-行为型模式-中介者模式

    c++设计模式-行为型模式-中介者模式;qt工程;c++简单源码; 中介者(Mediator)模式的定义:定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。中介者模式...

    中介者模式(Mediator Pattern)原理图

    中介者模式(Mediator Pattern)是一种行为型设计模式,用于减少对象之间的直接相互依赖,使得对象间的交互通过一个中介者对象来进行协调。在中介者模式中,对象之间不再直接相互调用,而是通过中介者对象来传递消息...

    C++设计模式课件17_Mediator_中介者.pdf

    Mediator模式是一种行为型设计模式,它定义了一个对象来封装一系列对象交互的方式,从而使各个对象之间无需显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 #### 二、Mediator模式的核心...

    设计模式 - 中介者模式(C++实例)

    **中介者模式(Mediator Pattern)**是一种行为设计模式,它定义了一个用来封装一系列对象交互的接口。在软件工程中,当多个对象之间存在复杂的相互依赖关系时,这种模式可以帮助我们降低系统的耦合度,使得各个对象...

    设计模式 - 中介者模式

    中介者模式是一种行为设计模式,它用于减少多个对象之间的复杂交互,将这些对象通过一个共同的对象——中介者联系起来,使得各对象之间不再直接引用,而是通过中介者进行通信。这种模式降低了对象间的耦合度,提高了...

    java常用设计模式-中介者模式

    中介者模式(Mediator Pattern)是一种行为设计模式,它允许对象之间通过中介者对象进行通信,从而避免对象之间的直接耦合。中介者模式将对象之间的复杂关系转化为中介者和对象之间的简单关系,从而提高了系统的灵活...

    mediator模式

    中介者模式是一种行为设计模式,它的主要目标是减少对象之间的耦合性,通过引入一个中介对象来协调多个对象之间的交互。在传统的多对象交互场景中,对象之间可能存在复杂的依赖关系,这会导致代码难以理解和维护。...

    Mediator 中介模式Java版

    1. **中介对象变得复杂**:随着参与者数量的增加,中介对象可能会变得非常复杂,维护起来困难。 2. **过度使用可能导致设计过于抽象**:如果过度依赖中介模式,可能会导致设计过于抽象,不易理解。 总结来说,...

    Mediator模式

    2. **Colleague(同事)**:这是Mediator模式中的基础类或接口,每个同事对象都持有一个对中介者对象的引用,通过中介者与其他同事对象进行交流,而不是直接通信。 3. **Concrete Colleague(具体同事)**:实现了...

    3 中介者模式-MOOC课程内容.pdf

    中介者模式通过引入一个中介对象,使得各个对象之间不直接相互引用,而是通过中介者进行间接通信,从而降低系统的耦合性。 在中介者模式中,有以下几个核心概念: - 中介者(Mediator):这是一个接口或者抽象类,...

    中介者模式逻辑关系

    中介者模式通过引入一个中介对象(Mediator),使得各个对象(Colleague)只需要与中介者交互,而不直接与其他对象通信,从而减少了对象间的直接依赖。 在标题和描述中提到的实验课题是利用中介者模式来简化多对象...

    设计模式-中介者模式(讲解及其实现代码)

    中介者模式的核心思想是引入一个中介对象来封装一系列对象之间的交互。这样,原本直接相互引用的对象不再直接通信,而是通过中介对象进行交互,降低了对象间的耦合度。在大型软件系统中,对象之间的关系往往错综复杂...

    3 中介者模式-课程内容.rar

    这个模式的主要目的是通过引入一个中介对象来简化原本复杂的网状结构,使得各个对象之间不再直接通信,而是通过中介对象进行间接交互。这有助于降低耦合度,提高代码的可维护性和可复用性。 在"3 中介者模式-课程...

Global site tag (gtag.js) - Google Analytics