Java设计模式之行为型模式(中介者模式)

中介者模式(Mediator)

1、背景

类与类之间会产生直接的交互,这在实际的编码中是常见的,例如,A类调用B类的方法。我们常说的“对扩展开放,对修改关闭”原则就是要防止某处修改导致处处修改的情景,因为这样极不利于后期维护。当A类直接调用B类的方法时,A类对B类产生了直接的依赖关系:A类直接依赖B类的方法。当B类的方法发生修改时(例如B类方法的方法名发生改变,B的类名发生改变),A类中的调用B类的方法的代码就极有可能报错,即需要修改。当然,这只是A类依赖B类的方法,若有更多的C、D、E、F依赖B的方法呢?确切地,C、D、E、F也有可能要修改对应的代码,这样就违背了“开闭原则”。一个类修改,其他类可能全部都需要修改,为了解决这个问题:中介者设计模式诞生了。

2、概述

①定义

中介者模式将各个类笼络在一个中介类的内部,由中介类负责为各个类建立相关的逻辑关系,实现相关的方法功能,防止各个类直接发生依赖。各个类只与中介类发生直接依赖。

附图:使用中介者模式之前

这里写图片描述

附图:使用中介者模式之后

这里写图片描述

②优势

  • 有效降低类与类之间的耦合度
  • 通过中介类将各个类聚集在一起,间接实现逻辑,体现了高内聚的特点
  • 后期代码维护性强,健壮性强

③劣势

  • 随着中介类管理的类愈多,内部类与类之间的逻辑愈复杂,后期中介类代码臃肿,不利于维护。
  • 对于耦合度不高的类来说是多此一举

3、实例分析

下面为大家介绍一系列有关中介者模式的代码。

①不使用中介者模式

这里写图片描述

逻辑:A、B类为分为一类,H类分为一类。A、B类直接依赖H类的show方法。

这里写图片描述

逻辑:当H类的方法名发生变化时(如图,由show变为了show_),A、B类中都相继报错,需要修改对应的方法名。

②使用了中介者模式

这里写图片描述

逻辑:Mediator为中介类,中介类注入H类,并在中介类中定义meaditorShow方法,方法中添加H类的show方法。这样,Mediator对H类建立了直接依赖。A、B类中注入Mediator类,并在showH方法中添加Mediator的mediatorShow方法,至此,A、B与Mediator类建立了直接依赖,与H类只是建立了间接依赖。当H类中方法show名称发生改变时,报错的位置只是存在于Mediator类,而不需要修改A、B类了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java设计模式中的行为模式共有11种,它们分别是策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式中介者模式和解释器模式。这些行为模式涉及到对象之间的交互和通信,用于解决不同对象之间的行为问题。其中,策略模式用于封装一系列的算法,让算法可以动态切换;模板方法模式用于定义算法的骨架,具体的实现由子类决定;观察者模式用于定义对象之间的一对多的依赖关系,当一个对象状态发生改变时,所有依赖该对象的对象都会收到通知;迭代器模式用于遍历集合对象的元素,而不暴露集合的内部结构;任链模式用于将请求的发送者和接收者解耦,每个接收者都可以选择处理请求或者将请求传递给下一个接收者;命令模式用于将请求封装成对象,从而可以更灵活地进行参数化和传递;备忘录模式用于保存和恢复对象的状态,以便在需要时可以回滚到之前的状态;状态模式用于根据对象的内部状态改变其行为;访问者模式用于将数据结构和操作分离,从而可以在不修改数据结构的情况下定义新的操作;中介者模式用于解耦多个对象之间的交互,使得各个对象可以独立地改变其行为;解释器模式用于定义一种语言的文法,并解释语言中的表达式。这些行为模式可以在不同场景下使用,根据具体的需求选择合适的模式来解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值