1. 定义一个 封装一组对象 如何 交互 的对象;

  2. 适用场景:

    • 引用关系复杂:系统中 对象之间 存在 复杂的 引用关系,产生的 相互依赖关系 结构混乱,难以理解;
    • 改变行为:交互的 公共行为,如果 需要 改变行为,可以 增加新的 中介者类;( 通过增加新的中介者类,达到扩展的目的 )
  3. 优点:

    • 降低复杂度:将 一对多 转化为 一对一,降低了 程序复杂程度;如:聊天室中有 8 个人,如果要一对一进行交互,需要交互 7 次; 使用了中介者模式后,变成一对一,只要将交互内容交给中介者就可以了,中介者负责与其余 7 人进行交互;
    • 解耦:实现了 类之间的解耦 操作;如:聊天室中有 8 个人,每个人都需要耦合另外 7 个,即持有另外 7 个对象,使用了中介者模式之后,8 个人只需要持有 中介者 对象即可,8 个人之间不再进行相互耦合;
  4. 缺点:如果在 业务场景中介者 数量过多,会导致系统 复杂性增加;

类图

代码

class Boy {
  constructor(mediator) {
    this.mediator = mediator;
    this.salary = 1000;
  }
  learnGirl() {
    this.mediator.learnGirl();
  }
}

class Girl {
  constructor(mediator) {
    this.mediator = mediator;
    this.age = 28;
  }
  learnBoy() {
    this.mediator.learnBoy();
  }
}

class Mediator {
  constructor(boy, girl) {
    this.boy = boy;
    this.girl = girl;
  }
  learnBoy() {
    console.log(`这个男孩月薪${this.boy.salary * 10}`);
  }
  learnGirl() {
    console.log(`这个女孩年龄${this.girl.age - 10}`);
  }
}

let boy = new Boy();
let girl = new Girl();
let mediator = new Mediator(boy, girl);
boy.mediator = mediator;
girl.mediator = mediator;
boy.learnGirl();
girl.learnBoy();
打赏作者
您的打赏是我前进的动力
微信
支付宝
评论

中午好👏🏻,我是 ✍🏻   疯狂 codding 中...

粽子

这有关于前端开发的技术文档和你分享。

相信你可以在这里找到对你有用的知识和教程。

了解更多

目录

  1. 1. 类图
  2. 2. 代码