Mediator 中介者

2024-04-25 05:28
文章标签 中介 mediator

本文主要是介绍Mediator 中介者,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

意图

使用一个中介者对象来封装一系列的对象交互。中介者使各个对象不需要显式地互相引用,从而使其耦合松散,而且可以独立的改变他们之间的交互。

结构

  • Mediator(中介者)定义一个接口用于各同事(Colleague)对象通信
  • ConcreteMediator(具体中介者)通过协调各同事对象实现协作行为;了解并维护它的各个同事。
  • Colleague class(同事类)知道它的中介者对象;每个同事类对象在需要与其他同事通信的时候与它的中介者通信。

适用性

  • 一组对象以定义良好但是复杂的方式进行通信,产生的交互依赖结构混乱且难以理解。
  • 一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象。
  • 想定制一个分布在多个类的行为,而又不想生成太多的子类。

代码示例

// 抽象中介者
interface Mediator {void register(Colleague colleague);void sendMessage(String message, Colleague colleague);
}// 具体中介者
class ConcreteMediator implements Mediator {private Colleague colleagueA;private Colleague colleagueB;public void register(Colleague colleague) {if (colleague instanceof ColleagueA) {colleagueA = colleague;} else if (colleague instanceof ColleagueB) {colleagueB = colleague;}}public void sendMessage(String message, Colleague colleague) {if (colleague == colleagueA) {colleagueB.receiveMessage(message);} else if (colleague == colleagueB) {colleagueA.receiveMessage(message);}}
}// 抽象同事类
abstract class Colleague {protected Mediator mediator;public Colleague(Mediator mediator) {this.mediator = mediator;}public abstract void receiveMessage(String message);
}// 具体同事类 A
class ColleagueA extends Colleague {public ColleagueA(Mediator mediator) {super(mediator);mediator.register(this);}public void sendMessage(String message) {mediator.sendMessage(message, this);}@Overridepublic void receiveMessage(String message) {System.out.println("ColleagueA received message: " + message);}
}// 具体同事类 B
class ColleagueB extends Colleague {public ColleagueB(Mediator mediator) {super(mediator);mediator.register(this);}public void sendMessage(String message) {mediator.sendMessage(message, this);}@Overridepublic void receiveMessage(String message) {System.out.println("ColleagueB received message: " + message);}
}// 测试类
public class MediatorPatternDemo {public static void main(String[] args) {Mediator mediator = new ConcreteMediator();Colleague colleagueA = new ColleagueA(mediator);Colleague colleagueB = new ColleagueB(mediator);colleagueA.sendMessage("Hello, ColleagueB!");colleagueB.sendMessage("Hi, ColleagueA!");}
}

在这个例子中,ConcreteMediator 作为中介者,协调 ColleagueA 和 ColleagueB 的通信。当 ColleagueA 或 ColleagueB 需要与对方通信时,它们会通过 ConcreteMediator 发送消息。

这篇关于Mediator 中介者的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/933796

相关文章

java设计模式(行为型模式:状态模式、观察者模式、中介者模式、迭代器模式、访问者模式、备忘录模式、解释器模式)

6,行为型模式 6.5 状态模式 6.5.1 概述 【例】通过按钮来控制一个电梯的状态,一个电梯有开门状态,关门状态,停止状态,运行状态。每一种状态改变,都有可能要根据其他状态来更新处理。例如,如果电梯门现在处于运行时状态,就不能进行开门操作,而如果电梯门是停止状态,就可以执行开门操作。 类图如下: 代码如下: public interface ILift {//电梯的4个状态//

助贷CRM系统:为金融中介行业打造全新营销管理模式

助贷CRM(客户关系管理)系统是针对金融中介行业,特别是从事贷款助贷业务的机构设计的一套综合管理系统。该系统旨在通过数字化、智能化的手段,优化金融中介机构的营销、销售、客户管理及服务流程,提升运营效率,增强客户体验,最终实现业绩增长。以下是鑫鹿助贷CRM系统为金融中介行业打造的全新营销管理模式的几个关键方面: 客户信息管理集成化: 系统能够集中存储和管理潜在客户、意向客户、已成交客户及老客

行为型设计模式-中介者(mediator)模式-python实现

设计模式汇总:查看 通俗示例 想象一下你正在参与一个团队项目,团队成员包括设计师、前端开发者、后端开发者、测试工程师等。每个团队成员都需要与其他成员沟通协作,比如设计师完成设计后需要通知前端开发者开始开发,前端开发者完成后需要通知测试工程师进行测试。如果每个团队成员都直接与其他所有团队成员沟通,那么沟通线路会变得非常复杂。为了简化这个过程,团队可以引入一个项目经理的角色,所有团队成员只与

中介者模式详解

中介者模式 简介通过引入一个中介者对象来封装和协调多个对象之间的交互,从而降低对象间的耦合度。 人话:就是两个类或者系统之间, 不要直接互相调用, 而是要中间的类来专门进行交互。 举个例子 比如两个国家之间(关系差, 没有大使馆), 需要联合国作为中介进行对话. class Country;class UnitedNations{public:vector<Country*> _count

《大话》之第三者家族 代理 Vs 中介者

前两天,有个同学突然问我说:“我感觉代理模式和中介者模式不好区分,你能给我讲讲吗?” 刚开始还没敢张嘴,因为他突然一问,我貌似也不知道,经过整理,现在将结果贴出来,请大家共享 代理模式: 内容:为其他对象提供一种代理以控制对这个对象的访问 图文并茂: 用这个图,大家可以看到什么呢?客户?  No!从这个图上,我们可以看到,Subject,定义了RealSubject和Proxy

《大话》之 中介者模式

一.简介: 1.背景:当今世界相对和平,但仍有个别地区,战乱不断,只为和平处理世界争端问题,才有了联合国的成立,说到底,联合国就和婚姻介绍所、房产销售处一样,就是一个中介 2.内容:用一个中介对象来封装一系列的对象交互。(中介者使各对象不需要要显式地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互)。 3.图文并茂: 就是文档中说的,同事1和同事2谁也不认识谁,但是他们都

游戏开发设计模式之中介者模式

目录 中介者模式的定义和结构 中介者模式的意图和主要解决的问题 中介者模式的使用场景 中介者模式的优点和缺点 中介者模式的应用实例 中介者模式的实现方式 中介者模式与观察者模式的关系 中介者模式在游戏开发中的具体应用案例是什么? 如何在大型项目中有效地实现和维护中介者模式? 中介者模式与观察者模式在实际应用中的优缺点比较是什么? 中介者模式的优缺点 观察者模式的优缺点 总

设计模式之美笔记 —— 中介模式

设计模式之美 - 73 一、中介模式的原理 1、原理:  中介模式定义了一个单独的中介对象,来封装一组对象之间的交互。将这组对象之间的交互委派给中介对象交互,来避免对象间的直接交互。 中介模式的设计思想和中间层(给代码解耦的一种方法就是引入中间层)很像,通过引入中介这个中间层,将一组对象建的交互,从多对多改成一对多。 2、举例 航空管制:为了让飞机在飞行的时候互不干扰,每架飞机都需

中介者模式解析:打造无缝通信的设计策略!

中介者模式(Mediator Pattern)是一种行为型设计模式,它通过引入一个中介角色来简化多个对象之间的交互。 中介者模式通常用于降低多个类之间的通信复杂性,避免它们之间直接交互带来的耦合问题。以下是具体介绍: 定义和意图 定义:中介者模式通过创建一个中介对象来封装一组对象之间的交互。意图:中介者模式的目的是减少多个对象之间的依赖,从而降低系统的复杂性,并提高其可扩展性。组成和实现方式

Java设计模式原则及中介者模式研究

在软件开发过程中,设计模式作为解决常见设计问题的有效工具,对于提升代码质量、促进团队协作具有重要意义。本文系统地阐述了Java设计模式的六大基本原则——单一职责原则、开放封闭原则、里氏替换原则、依赖倒置原则、接口隔离原则以及迪米特法则,深入分析了这些原则在提升软件可维护性、可扩展性和灵活性方面的作用。同时,本文聚焦于中介者模式这一行为型设计模式,详细探讨了其定义、特点、应用场景及实现方法。中介者模