`

设计模式:中间人模式

阅读更多

中间人设计模式是用于协作一组同事。这些同事相互之间不直接沟通,而是通过中介。

在下面的例子中,同事A想要说话,同事B想要打架。当他们做动作(例如doSomething)的时候,他们调用中间人去做那些动作或事情。

1、中间人类图


2、代码实例

package com.leon.mediator;

interface IMediator {
	public void fight();

	public void talk();

	public void registerA(ColleagueA a);

	public void registerB(ColleagueB b);
}

//具体的中间人
class ConcreteMediator implements IMediator {

	ColleagueA a;
	ColleagueB b;

	@Override
	public void fight() {
		// TODO Auto-generated method stub
		System.out.println("中间人在打架!");
	}

	@Override
	public void talk() {
		// TODO Auto-generated method stub
		System.out.println("中间人在说话!");

	}

	@Override
	public void registerA(ColleagueA a) {
		// TODO Auto-generated method stub
		this.a = a;
	}

	@Override
	public void registerB(ColleagueB b) {
		// TODO Auto-generated method stub
		this.b = b;
	}

}

abstract class Colleague {
	IMediator mediator;

	public abstract void doSomething();
}

//同事A
class ColleagueA extends Colleague {

	public ColleagueA(IMediator mediator) {
		this.mediator = mediator;
		this.mediator.registerA(this);
	}

	@Override
	public void doSomething() {
		// TODO Auto-generated method stub
		this.mediator.talk();
	}

}

//同事B
class ColleagueB extends Colleague {

	public ColleagueB(IMediator mediator) {
		this.mediator = mediator;
		this.mediator.registerB(this);
	}

	@Override
	public void doSomething() {
		// TODO Auto-generated method stub
		this.mediator.fight();
	}

}

public class Main {
	public static void main(String[] args) {
		IMediator mediator = new ConcreteMediator();

		ColleagueA talkColleague = new ColleagueA(mediator);
		ColleagueB fightColleague = new ColleagueB(mediator);

		talkColleague.doSomething();
		fightColleague.doSomething();
	}
}

 
 在其他行为类型的模式中,观察者模式跟中间人模式最为相似。你可以阅读下观察者模式来比较下两者的不同。

  • 大小: 49.5 KB
分享到:
评论

相关推荐

    图解追mm和23种设计模式(通过追MM,图解23种设计模式,有图有例子)

    23种GOF(GoF,Gang of Four)设计模式是被广泛接受和使用的,这些模式来自于Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位大师的著作《设计模式:可复用面向对象软件的基础》。让我们通过"追mm"这...

    传说中的经典设计模式书

    《设计模式:元素可复用面向对象软件的基础》是一本被广大程序员誉为经典的设计模式书籍,它由“Gang of Four”(GoF)——艾尔沙姆、希尔、约翰逊和福勒四位作者撰写。这本书是面向对象设计领域的里程碑之作,详细...

    设计模式之中介者模式

    **中介者模式**是软件设计模式中的一种结构型模式,它的主要目的是降低多个对象之间的复杂交互,通过引入一个中介对象来统一这些交互。在实际的软件开发中,当我们发现类与类之间出现过多的直接相互依赖时,可以考虑...

    二十三种设计模式【PDF版】

    为能和大家能共同探讨"设计模式",我将自己在学习中的心得写下来,只是想帮助更多人更容易理解 GoF 的《设计模式》。由 于原著都是以C++为例, 以Java为例的设计模式基本又都以图形应用为例,而我们更关心Java在中间件等...

    手机设计模式大观

    模型负责数据处理,视图展示用户界面,而呈现者作为中间人协调两者通信。 5. **MVVM模式(Model-View-ViewModel)**:MVVM模式在现代移动开发中非常流行,尤其在使用Kotlin或Swift等语言时。ViewModel作为视图和...

    23种JAVA设计模式和15种J2EE设计模式

    例如,当两个不同语言背景的人需要交流时,可以通过一个中间人(适配器)进行沟通,使得双方可以忽略语言差异,实现有效沟通。 ##### 2. Bridge 桥梁模式 桥梁模式将抽象与其实现分离,使得它们可以独立变化。例如...

    打篮球与设计模式(关于设计模式)

    ### 打篮球与设计模式 #### 创建型模式 ##### 1. **简单工厂模式 (Simple Factory)** 在软件工程中,简单工厂模式是一种用于创建对象的设计模式,它封装了对象的创建过程。在这个模式中,存在一个工厂类,它根据...

    《WPF设计模式》

    - **Presenter**:扮演中间人的角色,处理来自视图的操作请求,与模型进行数据交互,并更新视图。 与MVC相比,MVP模式的一个显著特点是视图不直接访问模型,而是通过Presenter进行交互。这样做的好处是能够更好地...

    从追MM谈Java的23种设计模式

    文章通过在聚会中不懂粤语的我与不会普通话的Sarah之间的交流,需要一个中间人来充当适配器。 7. 桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们可以独立地变化。文章通过早上和晚上对MM的问候...

    Java 设计模式 之 现实实例讲解

    - **应用场景**:在社交场合遇到一个只会说粤语的女孩,而你只会普通话,这时候可以通过一个中间人(适配器)来进行沟通。 - **优点**: - 让原本由于接口不兼容而不能一起工作的类可以一起工作。 - 提高了类的...

    关于java23种设计模式的有趣见解

    在朋友聚会中遇到说不同语言的人时,需要一个中间人来进行翻译,这个中间人就像适配器,将两种不同的通信方式连接在一起,使双方能够交流。 #### 7. BRIDGE(桥接模式) 桥接模式是一种结构型设计模式,它将抽象...

    23种设计模式的比喻

    - **应用场景**: 当你遇到了一个只会说粤语的女孩,而你不懂粤语,这时你可以找一个会两种语言的朋友作为中间人来进行沟通,这位朋友就像是一个适配器。 - **原理**: 适配器模式通过将一个类的接口转换成另一个接口...

    设计模式精解-GoF23种设计模式解析附C实现源码.pdf

    《设计模式精解-GoF23种设计模式解析附C++实现源码》这份资料深入探讨了由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位作者共同提出的23种设计模式,这四人也被尊称为GoF(Gang of Four)。...

    JAVA设计模式JAVA设计模式.doc

    适配器类作为中间人,将一个类的接口转换成客户端期望的另一个接口。 - **桥梁模式**:将抽象部分与实现部分分离,使它们可以独立地变化。通过组合而非继承,降低了抽象和实现之间的耦合度,增加了系统的灵活性。 ...

    趣味JAVA23种设计模式

    适配器模式解决了两个不兼容接口之间的通信问题,如同与一位只会说粤语的女孩交流,需要一个会说普通话和粤语的朋友作为中间人,使得双方能够顺利沟通。适配器模式通过适配器类将一个接口转换为客户期望的另一个接口...

    设计模式详解(Java).pdf

    1995年,艾瑞克·伽马(Erich Gamma)、理查德·海尔姆(Richard Helm)、拉尔夫·约翰森(Ralph Johnson)和约翰·维利斯迪斯(John Vlissides)四位专家合作编写了《设计模式:可复用面向对象软件的基础》,这本书收录了23...

    C#面向对象设计模式纵横谈(13):Proxy 代理模式(结构型模式)

    - **远程代理**:当目标对象位于远程服务器上时,本地代理可以作为中间人,负责处理与远程对象的通信。 - **虚拟代理**:用于替代资源密集型的对象,在实际需要的时候才加载对象。 - **保护代理**:为不同的用户提供...

    设计模式代理模式PPT学习教案.pptx

    设计模式代理模式PPT学习教案 本PPT学习教案主要讲解设计模式中的代理模式,通过示例代码和图表,详细介绍了代理模式的定义、结构、实现和应用场景。 知识点1:代理模式的定义 代理模式(Proxy Pattern)是一种...

    c++设计模式 描述c++常用设计模式

    本文旨在深入探讨由Erich Gamma等四人(常被称为GoF四人组)在他们的著作《设计模式:可复用面向对象软件的基础》中提出的23种经典设计模式,并通过C++语言的具体实现来阐述每种模式的核心思想。 #### 创建型模式 ...

Global site tag (gtag.js) - Google Analytics