• 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类了。

  • 相关阅读:
    Raknet是一个基于UDP网络传输协议的C++网络库(还有一些其它库,比如nanomsg,fastsocket等等)
    Arch Linux 是个 针对 i686 优化的 Linux 发行版(通过可以轻松使用的二进制包系统
    使用网盘(Dropbox/Google Drive)同步Git仓库
    百度网盘web端项目总结
    国内的网盘一个个倒下,这里有一份能让你用到老的存储指南(有好多评论)
    单元测试
    C# Closure
    gulp
    Net Memory Profiler 分析.Net程序内存泄露
    Net内存泄露原因及解决办法
  • 原文地址:https://www.cnblogs.com/wanxi/p/6476232.html
Copyright © 2020-2023  润新知