iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何深入理解Java设计模式的中介者模式
  • 849
分享到

如何深入理解Java设计模式的中介者模式

2023-06-25 13:06:30 849人浏览 八月长安
摘要

这期内容当中小编将会给大家带来有关如何深入理解Java设计模式的中介者模式,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、什么是中介者模式用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地

这期内容当中小编将会给大家带来有关如何深入理解Java设计模式的中介者模式,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

    一、什么是中介者模式

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

    中介者作为一种行为设计模式,它公开一个统一的接口,系统的不同对象或组件可以通过该接口进行通信。增加一个中介者对象后,所有的相关对象通过中介者对象来通信,而不是互相引用,所以当一个对象发生改变时,只需要通知中介者对象即可。

    二、中介者模式的结构

    如何深入理解Java设计模式的中介者模式

    Mediator:中介者接口。在里面定义各个同事之间交互需要的方法,可以是公共的通讯方法,比如changed方法,大家都用,也可以是小范围的交互方法。

    ConcreteMediator:具体中介者实现对象。它需要了解并维护各个同事对象,并负责具体的协调各同事对象的交互关系。

    Colleague:同事类的定义,通常实现成为抽象类,主要负责约束同事对象的类型,并实现一些具体同事类之间的公共功能,比如:每个具体同事类都应该知道中介者对象,也就是具体同事类都会持有中介者对象,就可以定义到这个类里面。

    ConcreteColleague:具体的同事类,实现自己的业务,在需要与其它同事通讯的时候,就与持有的中介者通信,中介者会负责与其它的同事交互。

    三、中介者模式的优缺点

    优点: 减少各个Colleague之间的耦合,使得可以独立地改变和复用各个Colleague类和Mediator

    缺点:中介者模式的缺点是显而易见的,因为这个“中介“承担了较多的责任,所以一旦这个中介对象出现了问题,那么整个系统就会受到重大的影响。

    四、中介者模式的使用场景

    一组定义良好的对象,现在要进行复杂的通信。

    定制一个分布在多个类中的行为,而又不想生成太多的子类。

    可以看出,中介对象主要是用来封装行为的,行为的参与者就是那些对象,但是通过中介者,这些对象不用相互知道。

    五、中介者模式与发布/订阅模式的异同

    中介者模式与业务相关,订阅/发布模式与业务无关。

    两个模式都有集中调度效果,对象之间不直接参与通信。

    六、中介者模式的实现

    安理会做中介

    联合国机构类--Mediator类

    //联合国机构abstract class UnitedNations{    //声明    public abstract void Declare(string message, Country colleague);}

    国家类--Colleague类

    //国家abstract class Country{    protected UnitedNations mediator;    public Country(UnitedNations mediator)    {        this.mediator = mediator;    }}

    美国类--ConcreteColleague类

    //美国class USA : Country{    public USA(UnitedNations mediator) : base(mediator)    {    }    //声明    public void Declare(string message)    {        mediator.Declare(message, this);    }    //获取消息    public void GetMessage(string message)    {        Console.WriteLine("美国获得对方消息:" + message);    }}

    伊拉克类--ConcreteColleague类

    //伊拉克class Iraq : Country{    public Iraq(UnitedNations mediator) : base(mediator)    {    }    //声明    public void Declare(string message)    {        mediator.Declare(message, this);    }    //获取消息    public void GetMessage(string message)    {        Console.WriteLine("伊拉克获得对方消息:" + message);    }}

    联合国安理会--ConcreteMediator类

    //联合国安全理事会class UnitedNationsSecurity : UnitedNations{    private USA colleague1;    private Iraq colleague2;    //美国    public USA Colleague1 { set { colleague1 = value; } }    //伊拉克    public Iraq Colleague2 { set { colleague2 = value; } }    public override void Declare(string message, Country colleague)    {        if (colleague == colleague1)        {            colleague2.GetMessage(message);        }        else        {            colleague1.GetMessage(message);        }    }}

    客户端代码

    class Program{    //客户端代码    static void Main(string[] args)    {        UnitedNationsSecurity UNSC = new UnitedNationsSecurity();        USA c1 = new USA(UNSC);        Iraq c2 = new Iraq(UNSC);        UNSC.Colleague1 = c1;        UNSC.Colleague2 = c2;        c1.Declare("不准研发核武器,否则开战");        c2.Declare("没研发,开战就开战");        Console.Read();    }}

    伊拉克获得对方消息:不准研发核武器,否则开战
    美国获得对方消息:没研发,开战就开战

    上述就是小编为大家分享的如何深入理解Java设计模式的中介者模式了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网精选频道。

    --结束END--

    本文标题: 如何深入理解Java设计模式的中介者模式

    本文链接: https://www.lsjlt.com/news/304944.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • 如何深入理解Java设计模式的中介者模式
      这期内容当中小编将会给大家带来有关如何深入理解Java设计模式的中介者模式,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、什么是中介者模式用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地...
      99+
      2023-06-25
    • 深入理解Java设计模式之中介者模式
      目录一、什么是中介者模式二、中介者模式的结构三、中介者模式的优缺点四、中介者模式的使用场景五、中介者模式与发布/订阅模式的异同六、中介者模式的实现结果总结一、什么是中介者模式 用一个...
      99+
      2024-04-02
    • 深入理解Java设计模式之建造者模式
      目录一、什么是建造者模式二、建造者模式的应用场景三、建造者模式的优缺点四、工厂模式和建造者模式的对比五、建造者模式的实现六、总结一、什么是建造者模式 建造者模式也称生成器模式 定义:...
      99+
      2024-04-02
    • 深入理解Java设计模式之观察者模式
      目录一、什么是观察者模式二、观察者模式的结构三、观察者模式的使用场景使用观察者模式也有两个重点问题要解决:广播链的问题。异步处理问题。四、观察者模式的优缺点五、观察者模式的实现六、观...
      99+
      2024-04-02
    • 深入理解Java设计模式之访问者模式
      目录一、什么是访问者模式二、访问者模式的结构三、访问者模式的使用场景四、访问者模式的优缺点五、访问者模式的实现总结一、什么是访问者模式 定义:表示一个作用于其对象结构中的各元素的操作...
      99+
      2024-04-02
    • 怎么深入理解Java设计模式中的访问者模式
      怎么深入理解Java设计模式中的访问者模式,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、什么是访问者模式定义:表示一个作用于其对象结构中的各元素的操作,它使你可以在不改变各...
      99+
      2023-06-25
    • Java设计模式之中介者模式
      在我们实际业务中,可能存在多个类之间相互调用,形成了一个复杂的网状结构。这时候就需要有一种模式去“捋顺”他们之间的关系,引出一个中间者让类之间不再相互调用,该...
      99+
      2022-11-13
      Java 设计模式 中介者模式
    • Java设计模式之java中介者模式详解
      目录引言介绍角色数据库同步数据案例不使用中介者模式的数据同步方案,各数据源维护各自的同步作业其实这样已经实现了我们的需求,但是存在一些问题中介者模式来重构,将数据同步的功能迁移到中介...
      99+
      2024-04-02
    • 如何深入理解Java设计模式的迭代器模式
      如何深入理解Java设计模式的迭代器模式,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、什么是迭代器模式迭代器模式是针对集合对象而生的,对于集合对象而言,肯定...
      99+
      2023-06-25
    • 深入理解Java设计模式之代理模式
      目录一、引言二、什么是代理模式三、代理模式的结构四、代理模式和装饰模式的异同五、代理模式和委托六、代理模式的种类七、代理模式的应用场景八、代理模式的优缺点九、代理模式的实现总结一、引...
      99+
      2024-04-02
    • Java 深入理解创建型设计模式之建造者模式
      1.提出问题 假如说,我们需要建房子:这一过程为打桩、砌墙、封顶。房子有各种各样的,比如普通房,高楼,别墅,各种房子的过程虽然一样,但是要求不要相同的.3)请编写程序,完成需求。 传...
      99+
      2024-04-02
    • 深入理解Java设计模式之策略模式
      目录一、什么是策略模式二、策略模式的结构三、策略模式的应用场景四、策略模式的优缺点六、策略模式的实现七、策略模式和简单工厂模式的结合八、策略枚举的实现九、总结一、什么是策略模式 策略...
      99+
      2024-04-02
    • 深入理解Java设计模式之组合模式
      目录一、什么是组合模式动机(Motivation)意图(Intent)二、组合模式的结构结构图说明:三、组合模式的使用场景四、组合模式的优缺点五、组合模式的实现六、组合模式的.NET...
      99+
      2024-04-02
    • 深入理解Java设计模式之原型模式
      目录一、前言二、什么是原型模式三、原型模式的适用场景四、原型模式的实现1.浅拷贝实现2.深拷贝实现五、总结一、前言 单例模式可以避免重复创建消耗资源的对象,但是却不得不共用对象。若是...
      99+
      2024-04-02
    • 深入理解Java设计模式之单例模式
      目录一、什么是单例模式二、单例模式的应用场景三、单例模式的优缺点四、单例模式的实现1.饿汉式2.懒汉式3.双重加锁机制4.静态初始化五、总结一、什么是单例模式 单例模式是一种常用的软...
      99+
      2024-04-02
    • 深入理解Java设计模式之装饰模式
      目录一、前言二、什么是装饰模式1.定义:2.意图3.别名4.动机5.作用6.问题三、装饰模式的结构四、装饰模式的使用场景五、装饰模式的优缺点六、装饰模式的实现七、装饰模式的.NET应...
      99+
      2024-04-02
    • 深入理解Java设计模式之状态模式
      目录一、什么是状态模式二、状态模式的结构三、状态模式的使用场景四、状态模式和策略模式对比五、状态模式的优缺点六、状态模式的实现七、总结一、什么是状态模式 定义:当一个对象的内在状态改...
      99+
      2024-04-02
    • 深入理解Java设计模式之命令模式
      目录一、什么是命令模式二、命令模式的使用场景三、命令模式的优缺点四、命令模式的实现五、总结一、什么是命令模式 命令模式是一个高内聚的模式,其定义为:将一个请求封装成一个对象,从而让你...
      99+
      2024-04-02
    • 深入理解Java设计模式之桥接模式
      目录二、桥接模式的结构三、桥接模式的使用场景四、桥接模式的优缺点五、装饰,桥接和适配器模式的异同适配器模式:桥接模式:装饰器模式:六、桥接模式的实现七、总结一、什么是桥接模式 桥接模...
      99+
      2024-04-02
    • 深入理解Java设计模式之享元模式
      目录一、引言二、什么是享元模式三、享元模式的结构四、享元模式和单例模式的异同五、享元模式的优缺点六、享元模式的使用场景七、享元模式的实现八、总结一、引言 大家都知道单例模式,通过一个...
      99+
      2024-04-02
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作