GOF23设计模式之中介者模式的理解



中介模式Mediator

  • 场景

假如没有总经理,下面有三个部门,财务部,市场部,研发部。财务部要发工资,让大家和对公司需要跟市场部和研发部都通气。市场部要接个新项目,需要研发部技术支持,需要财务部处理资金。市场部跟各个部门打交道。财务部发钱了,需要跑去和研发部和市场部打交道。研发部研发产品,市场部做调研,销售缺少资金又需要去找财务部。在这种情况下,虽然只有三个部门但是非常乱。者是因为在未说明的情况下,我们把这组织长了以中国网状结构的图形组织关系。多对对。

 

实际上,倘若公司有了总经理(当然现实世界也的确是这样,这样就非常好)各个部门有什么事情都报告总经理,总经理再通知相关部门。

这就是一个中介者模式。中经理起到一个中介协调的关系。

 



 
  
 
 
  
  
 



 

 

 

 

 

 

 

 

核心:如果一个系统中对象之间的联系呈现为网状结构,对象之间存在大量的多对多关系,将导致关系及其复杂,这些对象成为“同事关系”

我们引入一个中介者模式,使各个同事对象只跟中介者对象打交道,将复杂的网络结构化解为如下的星型结构。


中介者模式各个结构作用:

     抽象中介者,定义了同事对象到中介者对象的接口

     抽象同时类:

     具体中介者对象,实现抽象类的方法,它需要知道所有具体同时类,并从具体同事接受消息,向具体同事对象发出命令。

     具体同事类:每个具体同事只知道自己的行为,而不了解其他同事类的情况,但它们都认识中介者模式。


中介者模式的本质:

     解耦多个同事对象之间的交互关系。每个对象都持有中介者对象的引用,只跟中介者对象打交道。我们通过中介者对象统一管理这些交互关系

 

开发中遇到场景:

     MVC模式(model, view, controller)。M和V都和他打交道

     窗口游戏程序:窗口软件开发中窗口对象也是一个中介者对象。

     图形界面开发GUI中,多个组件之间的交互,可以通过引入一个中介者对象来解决。可以是整体的窗口对象或者DOM对象

     Java.lang.reflect.Method#invoke();

 
				
时间: 2024-10-05 13:53:13

GOF23设计模式之中介者模式的理解的相关文章

【GOF23设计模式】中介者模式

来源:http://www.bjsxt.com/ 一.[GOF23设计模式]_中介者模式.同事协作类.内部类实现 1 package com.test.mediator; 2 /** 3 * 同事类的接口 4 */ 5 public interface Department { 6 void selfAction();//做本部门的事情 7 void outAction();//向总经理发出申请 8 } 1 package com.test.mediator; 2 3 public class

GOF23设计模式之享元模式之理解

 享元模式(FlyWeight)      内存属于稀缺资源,不要随便浪费.如果有很多个完全相同或相似的对象,我们可以通过享元模式,节省内存.      节省了内存,有些时候,会造成运行时间的加长. 核心:      享元模式以共享的方式高效地支持大量细粒度对象的重用      享元对象能做到共享的关键是区分了内部状态和外部状态.          内部状态:可以共享,不会随环境变化而改变.          外部状态:不可以共享,会随环境变化而改变.   围棋软甲设计:      每个围棋

GOF23设计模式之中介者模式的实现

/**  * 时间:2015年4月12日09:57:11  * 抽象中介类,定义了同事对象到中介者对象的接口  *  */ package com.bjsxt.cn.mediator; public interface Mediator {  public void register(String dname, Deparment d);  public void command(String dname); } /**  * 时间:2015年4月12日09:59:50  * 抽象同事类:抽象出

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

23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而一个对象创建型模式将实例化委托给另一个对象.创建型模式有两个不断出现的主旋律.第一,它们都将关于该系统使用哪些具体的类的信息封装起来.第二,它们隐藏了这些类的实例是如何被创建和放在一起的.整个系统关于这些对象所知道的是由抽象类所定义的接口.因此,创建型模式在什么被创建,谁创建它,它是怎样被创建的,以

设计模式(中介者模式-对象去耦)

声明:本系列文章内容摘自<iOS设计模式> 中介者模式 用一个对象来封装一系列对象的交互方式.中介者使个对象不需要显式地相互调用,从而使其耦合松散,而且可以独立地改变它们之间的交互. 何时使用中介者模式 1.对象间的交互虽定义明确然而非常复杂,导致椅子对象彼此相互依赖而且难以理解: 2.因为对象引用了许多其他对象并与其通信,导致对象难以复用: 3.想要制定一个分布在多个对象中的逻辑或行为,又不想生成太多子类. 举个例子 有三个视图,我们可能需要两两之间进行跳转,类比于公司内同时每两个人都有可能

二十三种设计模式[17] - 中介者模式(Mediator Pattern)

前言 在开发软件的过程中,我们通常会将类设计的比较单纯,使其复用性更高.但类间的相互引用又使得类本身在没有其他类的支持下不能正常工作,导致其复用性降低.所以为了提高类的复用性我们需要尽可能的减少对其它类的引用,也就是说我们常说的解耦.中介者模式,顾名思义,就是存在一个类似中介的角色,类与类之间不直接交互而是通过中介进行间接的交互,也就意味着类与类之间不需要存在显示的引用,以达到松耦合的目的. 中介者模式,对象行为型模式的一种.在<设计模式 - 可复用的面向对象软件>一书中将之描述为"

折腾Java设计模式之中介者模式

博文原址:折腾Java设计模式之中介者模式 中介者模式 中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性.这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护.中介者模式属于行为型模式. 通俗点来讲就是提供一个中介平台,说到平台,那其实很容易联系到我们很熟悉的房地产中介.我们可以直接通过这个平台得到我们想要的信息,不用对象自身与其他对象交互. 买房子租房子就不需要去找房东,只需要在中介那里获取相应的×××信息.如下图那样,两方只

C#设计模式(18)——中介者模式(Mediator Pattern)

一.引言 在现实生活中,有很多中介者模式的身影,例如QQ游戏平台,聊天室.QQ群和短信平台,这些都是中介者模式在现实生活中的应用,下面就具体分享下我对中介者模式的理解. 二. 中介者模式的介绍 2.1 中介者模式的定义 从生活中的例子可以看出,不论是QQ游戏还是QQ群,它们都是充当一个中间平台,QQ用户可以登录这个中间平台与其他QQ用户进行交流,如果没有这些中间平台,我们如果想与朋友进行聊天的话,可能就需要当面才可以了.电话.短信也同样是一个中间平台,有了这个中间平台,每个用户都不要直接依赖与其

设计模式之中介者模式20170731

行为型设计模式之中介者模式: 一.含义 用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互. 同事角色与其他同时角色通信的时候,一定要通过中介者角色(中介者封装了各个同事类之间的逻辑关系) 二.代码说明 1.主要有两个角色 1)中介者角色 通过协调各同事角色实现协作行为,因此它必须依赖于各个同事角色. 2)同事角色 每一个同事角色都知道中介者角色,而且与其他的同事角色通信的时候,一定要通过中介者角色协作. 每个同事类的行为分