学习
实践
活动
专区
工具
TVP
写文章

设计模式中介模式(mediator模式)引入中介模式中介模式的实例中介模式分析

引入中介模式 中介模式实例 中介模式分析 引入中介模式 大家想象一下有十个人要共同完成一个工作,他们要互相合作和沟通,并且根据对方的通知可能要改变自己的状态,但这通常会带来很多问题,流程过于复杂 这就是中介模式的基本思想,mediator有仲裁中介的意思,一方面,当麻烦事情发生的时候,通知仲裁,当发生设计全体组员的事情时,也通知仲裁。当仲裁下达指示的时候,组员会立即执行。 中介模式的实例 我们通过一个gui程序来实现一个简单的仲裁模式 ? image.png 看上图是一个我们经常见的登录框。 于是,我们就可以利用中介模式,每个控件发生了变化,我们就把变化发给中介中介统一来处理,这样控件就只需要专注于自己的实现就行了。 首先看类图: ? image.png 中介模式分析 中介模式主要有几个角色 中介 就是负责定义控制逻辑,接受来自组员的消息并处理的接口,对应实例中的Mediator接口 具体的中介 实现接口,并根据不同的需求

39530

中介模式

中介模式 ? 在这个世界上,一个人大概能记住10个朋友的电话、30家餐馆的位置。 而中介模式的作用就是解除对象与对象之间的紧耦合关系(你或许需要一个秘书)。 中介模式重构 中介模式中,Player对象可以不再执行具体方法了。而把这一切委托给一个 playerDirector来实现。为了说明这个模式的靠谱,我们增加一个切换队伍的功能。 而在中介模式里,对象之间几乎不知道彼此的存在,它们只能通过中介对象来互相影响对方。因此,中介模式使各个对象之间得以解耦,以中介和对象之间的一对多关系取代了对象之间的网状多对多关系。 各个对象只需关注自身功能的实现,对象之间的交互关系交给了中介对象来实现和维护。 中介模式也存在一些缺点。

30820
  • 广告
    关闭

    【玩转 GPU】有奖征文

    精美礼品等你拿!

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    中介模式

    中介模式 中介模式Mediator Pattern用一个中介对象来封装一系列的对象交互,中介使各对象不需要显式地相互引用,从而使其耦合松散,降低多个对象和类之间的通信复杂性,而且可以独立地改变它们之间的交互 ,中介类通常处理不同类之间的通信。 中介模式又称为调停模式,是一种对象行为型模式。 描述 在软件工程中,中介模式定义了一个对象,该对象封装了一组对象之间的交互方式,由于该模式可以更改程序的运行行为,因此该模式被视为行为模式。 对于一个模块,可能由很多对象构成,而且这些对象之间可能存在相互的引用,为了减少对象两两之间复杂的引用关系,使之成为一个松耦合的系统,我们需要使用中介模式。 优点 简化了对象之间的交互。 可以通过引入中介类来实现,在中介中定义对象。 交互的公共行为,如果需要改变行为则可以增加新的中介类。

    21120

    中介模式

    定义 中介模式(Mediator Pattern)定义:用一个中介对象来封装一系列的对象交互,中介使各对象不需要显式地相互引用,从而使其松耦合,而且可以独立地改变它们之间的交互。 我们可以引入一个中介对象,使各个同事对象只跟中介对象打交道,将同事对象之间的关系行为进行分离和封装,使之成为一个松耦合的系统。 每个对象都持有中介对象的引用,只跟中介对象打交道。通过中介对象统一管理这些交互关系,并且还可以在同事对象的逻辑上封装自己的逻辑。 可以通过引入中介类来实现,在中介中定义对象。 总结 中介模式其实就是将一个复杂的事分离出来统一管理,对于复杂的系统来说,统一管理是有很大的好处的,比如:现在流行 SSM,为什么使用 spring 这个容器来管理对象之间的关系和生命周期呢?

    62810

    中介模式

    一、简介 1、中介模式用一个中介对象来封装一系列的对象交互。中介使各对象不需要显示的交互引用,从而使其耦合松散,而且可以独立的改变他们之间的交互。 2、成员类 Mediator:中介接口。 ConcreteMediator:具体的中介实现对象。它需要了解并为维护每个同事对象,并负责具体的协调各个同事对象的交互关系。 ConcreteColleague:具体的同事类,实现自己的业务,需要与其他同事对象交互时,就通知中介对象,中介对象会负责后续的交互。 3、UML ? 4、所属类别:行为型 二、C++程序 1 // 中介模式.cpp : 定义控制台应用程序的入口点。 } 87 } 88 }; 89 90 91 int _tmain(int argc, _TCHAR* argv[]) 92 { 93 //设置两个要通信的人和一个中介

    36560

    中介模式

    2019年11月11日08:45:25 中介模式(mediator pattern) 定义 从前的日色变得慢 车,马,邮件都慢 一生只够爱一个人 中介模式(mediator pattern 中介使各对象不需要显式地互相引用,从而使其耦合松散,而且可以独立地改变它们的交互。————《设计模式:可复用面向对象软件的基础》 中介模式是一种对象行为型模式。 “邮局”就是中介模式中的中介,“你”和“她”就是中介中的同事。 图示 中介模式结构图: 角色 从中介模式结构图中可知,有以下4个角色: (1)抽象中介:定义了中介 (2)具体中介:实现了抽象中介的方法,它需要知道所有具体同事对象,并从具体同事对象接收消息 中介模式与迪米特法则 中介模式是应用迪米特法则的典型。

    15710

    中介模式

    也叫调停模式,顾名思义,是一个中间人。多个类之间需要相互交互,难以管理,将结构改成星形,所有的交互全都交给中介去管理。 模式定义 用一个中介对象封装一系列的对象交互,中介使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 return c2; } public void setC2(ConcreteColleague2 c2) { this.c2 = c2; } //中介模式的业务逻辑 同事类只依赖中介,减少了依赖,同时也降低了类间的耦合。 中介会膨胀得很大,而且逻辑复杂。 适用于多个对象之间紧密耦合的情况,就是在类图中出现了蜘蛛网状结构。 在这种情况下要考虑使用中介模式变成星型结构。

    12240

    中介模式

    学了这么多的设计模式,离真正的实际运用还有很长的路要走,理论是理论,理论结合实践才有用。今天继续吧,继续一个学习一个新的设计模式——中介模式中介模式就是这样的存在,如果一个类需要调用另一个类的某一个方法的话,可以通过第三方转发这个调用。 中介模式的定义:用一个中介对象来封装一系列的对象交互。中介使各个对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 中介模式的UML类结构图如下所示: image.png  代码实现: 1 package day_10_mediator; 2 3 /** 4 * 中介接口 5 * @author void send(String msg, AbstractObject object); 11 } 1 package day_10_mediator; 2 3 /** 4 * 具体中介

    48070

    中介模式

    概念 中介模式:用一个中介对象封装一系列的对象交互,中介使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互 结构组成和类图 类图: ? 中介模式主要由:Mediator(中介)、Colleague(同事类)、ConcreteMediator(实现类)组成: 抽象中介:定义好同事类对象到中介对象的接口,用于各个同事类之间的通信。 在中介模式中,同事类之间必须通过中介才能进行消息传递。 中介的有点及试用场合 优点: - 适当地使用中介模式可以避免同事类之间的过度耦合,使得各同事类之间可以相对独立地使用。 - 使用中介模式可以将对象间一对多的关联转变为一对一的关联,使对象间的关系易于理解和维护。 - 使用中介模式可以将对象的行为和协作进行抽象,能够比较灵活的处理对象间的相互作用。 缺点:中介模式很容易在系统中应用,也很容易在系统中误用。当系统出现了‘多对多’交互复杂的对象群时,不要急于使用中介模式,而是要先反思系统在设计上是不是合理。

    32180

    设计模式 ——— 中介模式

    实际开发中我们使用更多的是中介模式的变种: 只要是实现封装对象之间的交互功能,就可以应用上中介模式,而不必过于拘泥于中介模式本身的结构。 标准的中介模式限制很多,导致能完全按照标准使用中介模式的地方并不是很多,而且多集中在界面实现上。只要本质不变,稍稍变形一下,简化一下,或许能更好的使用中介模式。 相关模式 中介模式和外观模式 这两个模式有相似的地方,也存在很大的不同。 另外,外观模式是实现单向的交互,是从子系统外部来调用子系统内部,不会反着来,而中介模式实现的是内部多个模块间多向的交互。 中介模式和观察模式 这两个模式可以组合使用。 中介模式可以组合使用观察模式,来实现当同事对象发生改变的时候,通知中介对象,让中介对象去进行与其它相关对象的交互。

    42730

    中介模式(Mediator)

    意图 中介模式是一种行为型模式,能让你减少对象之间混乱无序的依赖关系。该模式会限制对象之间的直接交互,迫使它们通过一个中介对象进行合作。 解决方案 中介模式建议你停止组件之间的直接交流并使其相互独立。这些组件必须调用特殊的中介对象,通过中介对象重定向调用行为,以间接的方式进行合作。 采用这种方式,中介模式让你能在单个中介对象中封装多个对象间的复杂关系网。类所拥有的依赖关系越少,就越易于修改、扩展或复用。 结构 组件(Component)是各种包含业务逻辑的类。 每个组件都有一个指向中介的引用,该引用被声明为中介接口类型。组件不知道中介实际所属的类,因此你可通过将其连接到不同的中介以使其能在其他程序中复用。 参考原文:中介设计模式

    10420

    设计模式-中介模式

    背景 随着汽车越来越普及了,很多家庭配置了汽车,其实很多是闲置状态,也只是代代步,但是为了方便出门提升司机们的收入,滴滴推出了顺风车服务,乘客和司机大哥发布的信息双方在平台上面都可以收到,这个跟设计模式中的中介模式类似 中介模式是什么? 中介模式(Mediator Pattern)属于行为模式,又叫调停模式。 每一个同事类都知道它的中介对象; 每一个同事对象在需与其他的同事通信的时候,与它的中介通信。 中介模式可以干嘛? 个人理解: 中介模式就类似于顺风车平台,平台是中介(Mediator),司机、乘客为同事角色(Colleague),通过平台乘客和司机去发布自己的信息,平台负责展示,并且从中抽水.... 中介模式类图 ?

    50630

    【设计模式-中介模式

    【导读】在信息高速发展的时代,估计很多朋友都记不住别人的号码,这个时候就需要一个“通讯录”来存储号码,这个通讯录就是中介。 一、定义 定义一个封装一组对象如何交互的对象,这个中介对象来简化原有对象之间的交互关系,降低系统中对象间的耦合度,使原有对象之间不必互相了解。 二、实例 例如日常通信软件上都会有一个“群” 的概念,这个群就是一个中介,有了群之后,我们不必一个一个的发信息,只需要发送信息到群上,群中的人就会收到相应的信息。 WechatCount wechatCount) { wechatCountList.add(wechatCount); } 3、发信息,依次通知到每个账号(除了消息发送

    22310

    命令模式&中介模式

    中介模式 中介模式,看这个名字也能理解出来,定一个中间结构来方便管理下游组织。 那么什么是中介模式呢? Mediator(抽象中介):用来定义参与中介之间的交互方式 ConcreteMediator(具体中介):实现中介定义的操作,即就是实现交互方式。 } 中介模式demo代码就算完成了,通过这个demo大家应该能发现,中介还是很好理解的。 更多在一个UI界面控件里面比较常见,当然在Java里面java.util.Timer 也可以理解为中介模式,因为它能控制内部线程如何去运行比如多久运行一次等。 上面提到中介和观察模式很像,通过demo代码大家也能发现这一点 观察模式中观察和被观察我们基本时固定的,而中介模式中,观察和被观察时不固定的,而且中介可能会最后变成一个庞大的原始类。

    31430

    设计模式——中介模式

    设计模式——中介模式 强烈推介IDEA2020.2破解激活,IntelliJ 一、中介模式的定义与优缺点 ---- 【1】中介模式(Mediator):定义一个中介对象来封装一些列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变他们之间的交互。 中介模式又叫调停模式,它是迪米特法则的典型代表。 【2】中介模式是一种对象行为模式,其主要优点如下:①、降低了对象之间的耦合性,使得对象易于独立地被复用。 【3】中介模式主要缺点如下:①、当同事类太多时,中介的职责将很大,它会变得复杂而庞大,以至于系统难以维护。 二、中介模式的结构与类图 ---- 中介模式的关键点是找出 “中介”,中介模式包含一下主要角色: 【1】抽象中介(Mediator)角色:它是中介的接口,提供了同事对象注册与转发同事对象信息的抽象方法

    18420

    设计模式---中介模式

    中介模式 引言 介绍 角色 开发中常见的场景 数据库同步数据案例 不使用中介模式的数据同步方案,各数据源维护各自的同步作业 其实这样已经实现了我们的需求,但是存在一些问题 中介模式来重构,将数据同步的功能迁移到中介中 ,由中介来管理数据同步作业 总结 主要优点 中介模式的主要缺点 适用场景 具体应用 Java Timer 中的中介模式 参考文章 ---- 引言 一般来说,同事类之间的关系是比较复杂的,多个同事类之间互相关联时 中介模式又称为调停模式,它是一种对象行为型模式。 ---- 角色 Mediator(抽象中介):它定义一个接口,该接口用于与各同事对象之间进行通信。 中介模式的核心在于中介类的引入,在中介模式中,中介类承担了两方面的职责: 中转作用(结构性):通过中介提供的中转作用,各个同事对象就不再需要显式引用其他同事,当需要和其他同事进行通信时,可通过中介来实现间接调用 23种设计模式(7):中介模式

    11910

    设计模式—— 十四 :中介模式

    什么是中介模式? (用一个中介对象封装一系列的对象 交互,中介使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它 们之间的交互。) 中介模式通用类图如下: 图14-1:中介模式通用类图 ? 中介模式的核心在于中介类的引入,在中介模式中,中介类承担了两方面的职责: (1) 中转作用(结构性):通过中介提供的中转作用,各个同事对象就不再需要显式引用其他同事,当需要和其他同事进行通信时 这样一来,整个模块可以说是很难开发和维护了,所以,这时候就要引入中介模式。 使用中介模式后 将之前的进销存结构重新设计: 图14-5:修改后的进销存示意图 ? 中介模式的优缺点 中介模式的主要优点如下: 中介模式简化了对象之间的交互,它用中介和同事的一对多交互代替了原来同事之间 的多对多交互,一对多关系更容易理解、维护和扩展,将原本难以理解的网状结构转换成相

    41930

    关注

    腾讯云开发者公众号
    10元无门槛代金券
    洞察腾讯核心技术
    剖析业界实践案例
    腾讯云开发者公众号二维码

    相关产品

    • CODING DevOps

      CODING DevOps

      CODING DevOps 包括代码托管、项目管理、测试管理、持续集成、制品库、持续部署等多款产品和服务,涵盖软件开发从构想到交付的一切所需,使研发团队在云端高效协同,实践敏捷开发与 DevOps,提升软件交付质量与速度。

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭

      扫码关注腾讯云开发者

      领取腾讯云代金券