zoukankan      html  css  js  c++  java
  • 行为模式

    中介者模式其实不是很常用,场景,多个继承了同一个抽象的对象要互相操作。这样,需要每个对象持有其它的对象,自己对其他对象做操作。这种方式使得对象之间耦合,对象与对象之间存在大量的关联关系,这样势必会导致系统的结构变得很复杂,同时若一个对象发生改变,我们也需要跟踪与之相关联的对象,同时做出相应的处理。如果加入中介者,让对象持有中介者,中介者持有其他对象,来间接来操作其他对象,达到解耦的目的。
     
    何时使用:多个类相互耦合,形成了网状结构。
    如何解决:将上述网状结构分离为星型结构。
     
    它的思想是把多个继承了同一个抽象的对象放在一个中介者里,组合的方式,然后把对象之间的交互交由中介者来做。最简单的一句话:把网状结构改成星型结构。
     
    和桥接很像,把网状结构改成哑铃/沙漏状结构,只不过中介者连接的对象是平级的,而桥接连接的对象是有上下级别的
     
     
     

    中介者模式的优缺点

    优点:
    • 简化了对象之间的关系,将系统的各个对象之间的相互关系进行封装,将各个同事类解耦,使得系统变为松耦合。
    • 提供系统的灵活性,使得各个同事对象独立而易于复用。
    缺点:
    • 中介者模式中,中介者角色承担了较多的责任,所以一旦这个中介者对象出现了问题,整个系统将会受到重大的影响。
    • 新增加一个同事类时,不得不去修改抽象中介者类和具体中介者类,此时可以使用观察者模式和状态模式来解决这个问题。

    中介者模式的适用场景

    以下情况下可以考虑使用中介者模式:
    • 一组定义良好的对象,现在要进行复杂的相互通信。
    • 想通过一个中间类来封装多个类中的行为,而又不想生成太多的子类。
  • 相关阅读:
    CMD窗口正确显示UTF-8字符
    《剑指offer》 链表中倒数第k个节点
    《剑指offer》 调整数组顺序使得奇数在偶数前面
    《剑指offer》 大数递增
    《剑指offer》 数值的整数次方
    《剑指offer》 二进制中1的个数
    《剑指offer》 跳台阶
    《剑指offer》斐波那契数列
    《剑指offer》旋转数组中的最小数字
    刷《剑指offer》笔记
  • 原文地址:https://www.cnblogs.com/43726581Gavin/p/9048493.html
Copyright © 2011-2022 走看看