展开

关键词

设计(mediator)引入的实例分析

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

24930

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

27280
  • 广告
    关闭

    90+款云产品免费体验

    提供包括云服务器,云数据库在内的90+款云计算产品。打造一站式的云产品试用服务,助力开发者和企业零门槛上云。

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

    学了这么多的设计,离真正的实际运用还有很长的路要走,理论是理论,理论结合实践才有用。今天继续吧,继续一个学习一个新的设计——在现实生活非常常见,比如你要租一个房子,可能你不会和房东直接接触而是通过来完成一系列繁琐的过程。 就是这样的存在,如果一个类需要调用另一个类的某一个方法的话,可以通过第三方转发这个调用。 的定义:用一个对象来封装一系列的对象交互。使各个对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 的UML类结构图如下所示: image.png  代码实现: 1 package day_10_mediator; 2 3 /** 4 * 接口 5 * @author

    35670

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

    25460

    定义 (Mediator Pattern)定义:用一个对象来封装一系列的对象交互,使各对象不需要显地相互引用,从而使其松耦合,而且可以独立地改变它们之间的交互。 每个对象都持有对象的引用,只跟对象打交道。通过对象统一管理这些交互关系,并且还可以在同事对象的逻辑上封装自己的逻辑。 图形界面开发 GUI ,多个组件之间的交互,可以将它们之间的引用和控制关系交由负责,整体的窗口对象或 DOM 对象就是这个。 想通过一个间类来封装多个类的行为,而又不想生成太多的子类。可以通过引入类来实现,在定义对象。 总结 其实就是将一个复杂的事分离出来统一管理,对于复杂的系统来说,统一管理是有很大的好处的,比如:现在流行 SSM,为什么使用 spring 这个容器来管理对象之间的关系和生命周期呢?

    47810

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

    18520

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

    12720

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

    8610

    Java(Mediator)

    (Mediator) ? 场景(大家熟悉吗?房产?): 假如没有总经理。下面三个部门:财务部、市场部、研发部。 这就是一个典型的“”,总经理起到一个、协调的作用 实现核心   如果一个系统对象之间的联系呈现为网状结构,对象之间存在大量多对多关系,将导致关系及其复杂,这些对象称为"同事对象",我们可以引入一个对象 Development(m); Financial f = new Financial(m); market.selfAction(); market.outAction(); } } 的本质 每个对象都持有对象的引用,只跟对象打交道。我们通过对象统一管理这些交互关系 开发常见的场景: MVC(其的C,控制器就是一个对象。 M和V都和他打交道) – 窗口游戏程序,窗口软件开发窗口对象也是一个对象 图形界面开发GUI,多个组件之间的交互,可以通过引入一个对象来解决,可以是整体的窗口对象或DOM对象 Java.lang.reflect.Method

    40400

    之八:

    定义 用一个对象来封装一系列的对象交互。使各对象不需要显地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 UML ? 所以PM作为 interface Mediator { public void send(String msg, Colleague colleague); } // PM认识所有同事,所以会持有同事们的实例 评价 当系统出现多对多交互复杂的对象群时,不要急着使用,而要先反思你的系统在设计上是不是合理。 优点: 减少各个Colleague之间的耦合,使得可以独立地改变和复用各个Colleague类和Mediator 缺点: Mediator实现过于复杂 计算器就是的实现,所有按键以及屏幕互相不了解 ,处理按键结果给屏幕显示 适用于一组对象用定义良好但是复杂的方进行通信的场合

    27810

    浅析

    这种用一个对象(或调停)来封装一系列的对象交互的场景,就是今天要讲的所使用的。 一. 的基本绍 意图 用一个对象来封装一系列的对象交互。 使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 结构 的基本结构如下: ? 的示例 接下来以一个拟聊天室的简易代码来说明下: 抽象同事类 package com.wangmengjun.tutorial.designpattern.mediator; public 门面 门面很相似,两均用来给出一个低耦合的系统。 vs.

    25660

    设计 ———

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

    34930

    【设计-

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

    13410

    设计-

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

    32930

    命令&

    ,看这个名字也能理解出来,定一个间结构来方便管理下游组织。 那么什么是呢? 在GoF 的《设计解释为:定义了一个单独的()对象,来封装一组对象之间的交互。将这组对象之间的交互委派给与对象交互,来避免对象之间的直接交互。 再来看看这个结构图吧: ? Mediator(抽象):用来定义参与之间的交互方 ConcreteMediator(具体):实现定义的操作,即就是实现交互方。 } demo代码就算完成了,通过这个demo大家应该能发现,还是很好理解的。 上面提到和观察很像,通过demo代码大家也能发现这一点 观察观察和被观察我们基本时固定的,而,观察和被观察时不固定的,而且可能会最后变成一个庞大的原始类。

    15530

    设计---

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

    5110

    设计——

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

    9320

    Design Patterns 25 -

    尽管将一个系统分割成许多对象通常可以增加其可服用性, 但是对象间相互连接的激增又会降低其可复用性了. , 用一个对象来封装一系列的对象交互. 很容易在系统应用, 也很容易在系统误用. 当系统出现了”多对多”交互复杂的对象群时, 不要急于使用, 而要先反思你的系统在设计上是不是合理. 一般应用与一组对象已定义良好但是复杂的方进行通信的场合, 以及想定制一个分布在多个类的行为, 而又不想生成太多的子类的场合.

    10630

    14.设计--(Mediator)

    1.定义 是一种行为型,是为了解决对象之间错综复杂的调用关系的一种设计,这种错综复杂的调用关系采用一个类来进行帮忙调用,所有的调用只是需要关心,而不需要进行互相依赖。 2.结构图 Person是对人员信息的抽象,所以PersonZhangSan、PersonXiaoHong以及PersonXiaoHuang都继承于Person。 3.实现 Person是对人员信息的抽象,所有人员都应该具备名字、空闲时间、是否已安排约会,所以单独进行抽象,让所有的人员具有一致性。 很像一个协调,他的作用就是帮助协调,不再是自己去找别人,如果自己去做那么对象之间的关系就会变得十分复杂。 登场的角色 Mediator(仲裁)角色,用于对对象之间进行协调,文由Mediator扮演此角色。

    9830

    JAVA 设计

    用途 (Mediator) 用一个对象来封装一系列的对象交互。使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 是一种行为型。 结构 ? 图-结构图 Mediator : 为 Colleague 对象定义一个交流接口。 应用场景 一般用于定义良好但是交互较为负责的对象集合。产生的相互依赖关系是无结构化的并且难以理解。 和很多其他对象有引用关系以及交互的对象很难被重用。 想定制一个分布在多个类的行为,而又不想生成太多的子类的场合。 推荐 本文属于 JAVA设计系列 。 参考资料 《大话设计》《HeadFirst设计

    231100

    相关产品

    • 共享带宽包

      共享带宽包

      共享带宽包(BWP)是一种多IP聚合的计费模式 ,可大幅降低公网费用 。共享带宽包提供包月带宽 ,月 TOP5 消峰计费 ,月 95 消峰计费等多种计费模式 ,满足您不同业务场景。合理配置共享带宽包可帮您大幅降低公网费用 ,优化业务成本。

    相关资讯

    热门标签

    扫码关注云+社区

    领取腾讯云代金券