中介模式

中介模式:

  1. 公开一个统一的接口,限制系统的不同部分可以通过该接口进行通信;
  2. 系统不同部分不再显示的引用彼此;
  3. 属于行为设计模式。

生活中例子:

  • 机场交通控制系统:机场控制塔(中介者)处理飞机的起飞和降落,因为所有通信(监听到或发出的通知)都是从飞机到控制塔,而不是飞机和飞机直接相互通信。

优点:

  • 能够将系统中对象或组件之间所需的通信渠道从多对多减少到多对一。

缺点:

  1. 会导致性能下降,因为它们总是间接地进行通信;
  2. 会引入单一故障点。

区别

  • 和中介者模式比较相似的有观察者模式和外观模式,如下:

--- 中介者模式与观察者模式

  • 中介者模式严格限制对象间只能通过中介者模块进行通信(对象之间不可通信);
  • 观察者模式中的通信方式是由观察者和发布者互连的方式决定,观察者之间可以相互通信(一个观察者可能是另一个观察者的发布者)。

--- 中介者模式与外观模式

  • 中介者模块在它被模块显式引用的地方汇集这些模块之间的通信,是多向的;
  • 外观模式仅仅是为模块或者系统定义一个简单的接口,没有任何额外的功能,系统中的其他模块不会直接关联外观,是单向的。

代码例子:

  • 定义玩家和记分牌,玩家和记分牌之间不直接通信:

  • 中介的业务:

  • 执行:

  • 上面例子的流程是这样的:按键告诉中介可以让玩家开始玩了,玩家收到通知后开始玩耍,然后告诉中介可以让分数牌可以更新分数了。
  • 更多例子待补充~~~~~~

一句话总结:

  • 租房子前,我们和中介联系,房东和中介联系,我们和房东之间无法联系。
时间: 2024-08-06 17:05:03

中介模式的相关文章

php中的设计模式之--中介模式

<?php /* 中介者模式是一种行为型模式,它包装了一系列对象相互作用的方式, 使得这些对象不必相互明显作用,从而使它们可以松散偶合.当某些对象之间的作用发生改变时, 不会立即影响其他的一些对象之间的作用,保证这些作用可以彼此独立的变化. 定义一个中介对象来封装系列对象之间的交互.中介者使各个对象不需要显示地相互引用,从而使其耦合性松散,而且可以独立地改变他们之间的交互. 主要角色 ? 中介者(Mediator)角色:定义了对象间相互作用的接口(房产中介) ? 具体中介者(ConcreteMe

21中介模式

 1中介模式的核心内容是: A:通过中间这向多方发送消息 2中介模式的作用:通过中介模式模式中介对两个互不通信的部分进行发通知. 3中介模式具体描述 MEDIATOR调停者模式 调停者模式:调停者模式包装了一系列对象相互作用的方式, 使得这些对象不必相互明显作用.从而使他们可以松散偶合. 当某些对象之间的作用发生改变时,不会立即影响其他的一些对象之间的作用. 保证这些作用可以彼此独立的变化.调停者模式将多对多的相互作用转化 为一对多的相互作用.调停者模式将对象的行为和协作抽象化 ,把对象在小

Java中介模式(Mediator模式)

Mediator定义:用一个中介对象来封装一系列关于对象交互行为. 为何使用Mediator模式/中介模式 各个对象之间的交互操作非常多,每个对象的行为操作都依赖彼此对方,修改一个对象的行为,同时会涉及到修改很多其他对象的行为,如果使用Mediator模式,可以使各个对象间的耦合松散,只需关心和 Mediator的关系,使多对多的关系变成了一对多的关系,可以降低系统的复杂性,提高可修改扩展性. 如何使用中介模式 首先 有一个接口,用来定义成员对象之间的交互联系方式:    public inte

伪中介模式(5.5)

中介模式(mediator pattern)是一种"平台式"或"管家式"委派方式. 中介模式中,中介是各个希望相互交互的参与者的共同且唯一代理,它完成消息的转发或处理. 平台式中介 现实生活中有集市.股票交易所.婚姻介绍所.房屋中介等形形色色的中介(mediator)组织,它们有效地将参与者(participator)的两两交互转化为参与者与中介的交互.但是,这些中介正好是GoF中介模式的错误例子.网上有许多人用QQ为例引入中介模式,显然没有从代码的角度分析,纯属想

设计模式3(原型模式,中介模式)

原型模式 Delphi中实现是将创建方法进行了strict private 处理 Clone方法不仅产生新的实例,还要对原来对象的属性等进行Clone Tcontractprototype=class(IPrototype) Strict provide Create(Aobject:Tcontractprototype) Public Function Clone:TContractPrototype; End; 中介者模式 封装对象之前的交互 体现了依赖抽象不依赖子类的原则,同事通过中介来触

设计模式之中介模式

参考博文:https://www.cnblogs.com/chenssy/p/3348520.html 2019-06-24  11:39:45 中介模式:处理对象之间多对多的复杂关系. 中介模式成员:抽象成员.具体成员.抽象中介者.具体中介者. 成员:成员含有中介者的抽象引用,通过中介者对其他对象进行操作. 中介者: 中介者含有所有成员的引用,通过这些引用操作成员. 基本代码:参考博文. 原文地址:https://www.cnblogs.com/youzoulalala/p/11076286.

中介模式 Mediator

两个类之间通信,不通过直接通信的方式,而是中间加一层类似于中介的类,中介者模式,就类比租房时找中介那会 // Mediator.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <string> #include <VECTOR> #include <iostream> using namespace std; clas

设计模式之行为型中介模式

通过中介者对象封装一系列对象之间的交互,使对象之间不再相互引用,降低他们之间的耦合,有时中介者对象也可以改变对象之间的交互.观察者模式和中介者模式都是通过消息收发机制实现,不过在观察者模式中,一个对象既可以是消息的发送者也可以是消息的接收者,而中介者模式中消息的发送方只有一个就是中介者对象,而且中介者对象不能订阅消息,只有那些活跃对象(订阅者)才能订阅中介者消息. // 中介者对象 var Mediator = function() { // 消息对象 var _msg = {}; return

设计模式实例:中介模式实现打赏功能

实现功能: 1.用户A向用户B打赏金币 2.减少用户A的金币,并写入金币明细表 3.增加用户B的金币,并写入金币明细表 4.给用户B发送一个打赏通知 ps:本文中的同事,并非是指该类为同事,而是沿用中介者模式中的称呼.与中介者打交道的各个类. 一.虚拟同事类: /** * Class Colleague */ abstract class Colleague { protected $mediator; public function setMediator(Mediator $mediator