`

设计模式之中介者模式

 
阅读更多
中介者模式
假如没有总经理,下面三个部门,财务部、市场部、研发部,财务部要发工资,让大家核对公司需要跟市场部和研发部都通气,市场部要接个新项目,需要研发部门处理技术,需要财务部出资金,市场部跟各个部门打交道,虽然只有三个部门,但是关系非常乱 
假如没有总经理,六个部门的关系非常混乱,实际上公司都总结里,各个部门有什么事情都通报到总经理这里,总经理再通知各个相关部门,我们可以引入一个中介者对象,使各个同事对象只跟中介者对象打交道,将复杂的网络结构化解为如图一第二张图
核心
如果一个系统中对象之间的联系呈现为网状结构,对象之间存在大量多对多关系,将导致关系及其复杂,这些对象称为”同事对象“。
本质
解耦多个同事之间的交互关系,每个对象都持有中介者对象的引用,只跟中介者对象打交道,我们通过中介者对象统一管理这些交互关系。
 结构图

 
/**
 * 同事类的接口
 */
public interface Department {
    void selfAction(); //对内的动作
    void outAction();//对外的动作

}

/**
 * 研发部门
 */
public class Development implements Department {
    Mediator mediator;  //组合持有中介

    public Development(Mediator mediator){
        super();
        this.mediator = mediator;
        mediator.register("development",this);
    }

    @Override
    public void selfAction() {
      System.out.println("专心科研");
    }

    @Override
    public void outAction() {
        System.out.println("汇报工作,没钱了,请上级指示!");
        mediator.command("FinancialDepartment"); //对外只需要调用中介让其去执行
    }
}

/**
 * 中介中有部门部门中有中介
 */
public class FinancialDepartment implements Department {
   
    Mediator mediator;

    public FinancialDepartment(Mediator mediator){
        super();
        this.mediator = mediator;
        mediator.register("development",this);
    }

    @Override
    public void selfAction() {
      System.out.println("数钱");
    }

    @Override
    public void outAction() {
        System.out.println("汇报工作,没钱了,钱太多,该怎么花!");
        mediator.command("Development");//通过中介给研发部门发工资
    }
}


public interface Mediator {
    void register(String departmentName,Department obj); //把同事注册到中介之中
    void command(String departmentName);
}

public class PresidentMediator implements Mediator {

    private Map<String,Department> map = new HashMap<>();

    @Override
    public void register(String departmentName, Department department) {
         map.put(departmentName,department);
    }

    @Override
    public void command(String departmentName) {//todo 根据要求做不同的事情
       map.get(departmentName);
    }
}
 
 
场景:
MVC模式中其中C控制器就是一个中介者对象,M和V都和他打交道
窗口游戏程序,窗口对象也是一个中介者对象
Java.lang.reflect.Method#invoke();
  • 大小: 58.5 KB
  • 大小: 13.7 KB
  • 大小: 38.8 KB
分享到:
评论

相关推荐

    java设计模式之中介者模式

    中介者模式是一种行为设计模式,它用于简化多个对象之间的交互,通过引入一个中介对象来解耦原本直接相互作用的对象。在Java编程中,这种模式尤其有用,因为它可以帮助我们减少类之间的耦合,提高代码的可读性和可...

    23钟设计模式之中介者模式

    中介者模式是软件设计模式中的一种行为模式,其主要目的是减少对象之间的依赖关系,降低对象间的耦合度,使得系统更易于理解和维护。在中介者模式中,一个或多个对象(称为同事对象)通过中介者对象进行通信,而不是...

    Java教程-Java设计模式之中介者模式.docx

    Java设计模式中的中介者模式是一种行为设计模式,其主要目的是减少对象之间的直接交互,从而降低对象间的耦合度。在日常生活中,我们常常会遇到房屋中介、留学中介等,它们作为一个中间媒介,使得原本需要直接打交道...

    设计模式之蝉

    《设计模式之蝉》这本书可能是对设计模式的一种形象化描述,或是以蝉为比喻来讲解设计模式的概念。蝉在地下蛰伏多年,最终破土而出,仅生活在地面上的几周时间。这一生命周期与设计模式的持久价值有异曲同工之妙,即...

    设计模式之美——教你写出高质量代码

    "设计模式之美——教你写出高质量代码"这个主题旨在帮助开发者更好地理解和应用设计模式,从而提升代码的质量和可维护性。设计模式不仅对面试有所帮助,也是职场发展中的必备技能,无论你使用哪种开发语言。 设计...

    Java设计模式之禅

    《Java设计模式之禅》是一本深入浅出讲解设计模式的书籍,书中不仅包含23种经典设计模式的案例,还详细介绍了设计模式背后的思想和原则,适合初学者以及对设计模式有一定了解的程序员阅读。本书旨在帮助读者理解如何...

    23种设计模式详解PDF

    设计模式 的分类 总体来说设计模式分为三大类: 创建型模式(5): 工厂方法模式 、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式(7): 适配器模式、装饰器模式、代理模式、外观模式、桥接模式、...

    设计模式之美—学习笔记

    在这个“设计模式之美”的学习笔记中,我们将探讨一些主要的设计模式,以及它们在实际开发中的应用。 首先,我们从创建型模式开始。这类模式主要用于对象的创建,如单例模式(Singleton)、工厂模式(Factory ...

    Android编程设计模式之中介者模式详解

    Android 编程设计模式之中介者模式详解 中介者模式(Mediator Pattern)是一种非常重要的设计模式,它主要用于解决多个对象之间的交互问题。在 Android 编程中,中介者模式广泛应用于解决复杂的对象交互问题。 ...

    24种设计模式以及混合设计模式

    创建型设计模式关注对象的创建过程,如单例模式(Singleton)、工厂模式(Factory)、抽象工厂模式(Abstract Factory)和建造者模式(Builder)。这些模式提供了一种灵活且可扩展的方式来创建和管理对象。 结构型...

    c#设计模式之中介者

    总结起来,C#中的中介者设计模式提供了一种有效的手段来管理对象间的通信,通过中介者对象集中处理复杂的交互逻辑,降低了对象之间的耦合,提高了代码的可读性和可维护性。理解和掌握这一模式对于提升C#开发者的设计...

    设计模式之《大话设计模式》.pptx

    设计模式之《大话设计模式》.pptx

    java 23种设计模式.zip

    设计模式主要分为三大类: 1.创建型模式:工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式。 2.结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。 4.行为型模式:...

    人人都懂设计模式 人人都懂设计模式

    人人都懂设计模式 设计模式是软件开发中的一种解决方案,它提供了一种通用的设计思想和方法论,可以帮助开发者更好地设计和实现软件系统。设计模式可以分为三大类:创建型模式、结构型模式和行为型模式。 在本书中...

    java常用设计模式-中介者模式

    中介者模式(Mediator Pattern)是一种行为设计模式,它允许对象之间通过中介者对象进行通信,从而避免对象之间的直接耦合。中介者模式将对象之间的复杂关系转化为中介者和对象之间的简单关系,从而提高了系统的灵活...

    设计模式 - 中介者模式(C++实例)

    **中介者模式(Mediator Pattern)**是一种行为设计模式,它定义了一个用来封装一系列对象交互的接口。在软件工程中,当多个对象之间存在复杂的相互依赖关系时,这种模式可以帮助我们降低系统的耦合度,使得各个对象...

    Head First 设计模式 +Java设计模式(第2版)

    这本书通过丰富的图像、故事和幽默的方式,引导读者了解23种经典的GoF(Gang of Four)设计模式,包括单例模式、工厂模式、观察者模式、装饰器模式、适配器模式、代理模式等。书中强调了如何在实际项目中选择和应用...

Global site tag (gtag.js) - Google Analytics