中间人设计模式是用于协作一组同事。这些同事相互之间不直接沟通,而是通过中介。
在下面的例子中,同事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(); } }
在其他行为类型的模式中,观察者模式跟中间人模式最为相似。你可以阅读下观察者模式来比较下两者的不同。
相关推荐
23种GOF(GoF,Gang of Four)设计模式是被广泛接受和使用的,这些模式来自于Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位大师的著作《设计模式:可复用面向对象软件的基础》。让我们通过"追mm"这...
《设计模式:元素可复用面向对象软件的基础》是一本被广大程序员誉为经典的设计模式书籍,它由“Gang of Four”(GoF)——艾尔沙姆、希尔、约翰逊和福勒四位作者撰写。这本书是面向对象设计领域的里程碑之作,详细...
**中介者模式**是软件设计模式中的一种结构型模式,它的主要目的是降低多个对象之间的复杂交互,通过引入一个中介对象来统一这些交互。在实际的软件开发中,当我们发现类与类之间出现过多的直接相互依赖时,可以考虑...
为能和大家能共同探讨"设计模式",我将自己在学习中的心得写下来,只是想帮助更多人更容易理解 GoF 的《设计模式》。由 于原著都是以C++为例, 以Java为例的设计模式基本又都以图形应用为例,而我们更关心Java在中间件等...
模型负责数据处理,视图展示用户界面,而呈现者作为中间人协调两者通信。 5. **MVVM模式(Model-View-ViewModel)**:MVVM模式在现代移动开发中非常流行,尤其在使用Kotlin或Swift等语言时。ViewModel作为视图和...
例如,当两个不同语言背景的人需要交流时,可以通过一个中间人(适配器)进行沟通,使得双方可以忽略语言差异,实现有效沟通。 ##### 2. Bridge 桥梁模式 桥梁模式将抽象与其实现分离,使得它们可以独立变化。例如...
### 打篮球与设计模式 #### 创建型模式 ##### 1. **简单工厂模式 (Simple Factory)** 在软件工程中,简单工厂模式是一种用于创建对象的设计模式,它封装了对象的创建过程。在这个模式中,存在一个工厂类,它根据...
- **Presenter**:扮演中间人的角色,处理来自视图的操作请求,与模型进行数据交互,并更新视图。 与MVC相比,MVP模式的一个显著特点是视图不直接访问模型,而是通过Presenter进行交互。这样做的好处是能够更好地...
文章通过在聚会中不懂粤语的我与不会普通话的Sarah之间的交流,需要一个中间人来充当适配器。 7. 桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们可以独立地变化。文章通过早上和晚上对MM的问候...
- **应用场景**:在社交场合遇到一个只会说粤语的女孩,而你只会普通话,这时候可以通过一个中间人(适配器)来进行沟通。 - **优点**: - 让原本由于接口不兼容而不能一起工作的类可以一起工作。 - 提高了类的...
在朋友聚会中遇到说不同语言的人时,需要一个中间人来进行翻译,这个中间人就像适配器,将两种不同的通信方式连接在一起,使双方能够交流。 #### 7. BRIDGE(桥接模式) 桥接模式是一种结构型设计模式,它将抽象...
- **应用场景**: 当你遇到了一个只会说粤语的女孩,而你不懂粤语,这时你可以找一个会两种语言的朋友作为中间人来进行沟通,这位朋友就像是一个适配器。 - **原理**: 适配器模式通过将一个类的接口转换成另一个接口...
《设计模式精解-GoF23种设计模式解析附C++实现源码》这份资料深入探讨了由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位作者共同提出的23种设计模式,这四人也被尊称为GoF(Gang of Four)。...
适配器类作为中间人,将一个类的接口转换成客户端期望的另一个接口。 - **桥梁模式**:将抽象部分与实现部分分离,使它们可以独立地变化。通过组合而非继承,降低了抽象和实现之间的耦合度,增加了系统的灵活性。 ...
适配器模式解决了两个不兼容接口之间的通信问题,如同与一位只会说粤语的女孩交流,需要一个会说普通话和粤语的朋友作为中间人,使得双方能够顺利沟通。适配器模式通过适配器类将一个接口转换为客户期望的另一个接口...
1995年,艾瑞克·伽马(Erich Gamma)、理查德·海尔姆(Richard Helm)、拉尔夫·约翰森(Ralph Johnson)和约翰·维利斯迪斯(John Vlissides)四位专家合作编写了《设计模式:可复用面向对象软件的基础》,这本书收录了23...
- **远程代理**:当目标对象位于远程服务器上时,本地代理可以作为中间人,负责处理与远程对象的通信。 - **虚拟代理**:用于替代资源密集型的对象,在实际需要的时候才加载对象。 - **保护代理**:为不同的用户提供...
设计模式代理模式PPT学习教案 本PPT学习教案主要讲解设计模式中的代理模式,通过示例代码和图表,详细介绍了代理模式的定义、结构、实现和应用场景。 知识点1:代理模式的定义 代理模式(Proxy Pattern)是一种...
本文旨在深入探讨由Erich Gamma等四人(常被称为GoF四人组)在他们的著作《设计模式:可复用面向对象软件的基础》中提出的23种经典设计模式,并通过C++语言的具体实现来阐述每种模式的核心思想。 #### 创建型模式 ...