Skip to main content

中介者模式 Mediator Pattern

介绍

  • 解除对象与对象之间紧耦合的关系
  • 所有对象都通过中介者对象来通信,而不是相互引用

示例

olu 要去租房了,找的中介,中介对应很多买家和卖家。比如 房主a 修改了价格,通知中介告诉 租客b。

class Mediator {
constructor(a, b) {
this.a = a
this.b = b
}

setA() {
const number = this.b.number
this.a.setNumber(number * 1)
}

setB() {
const number = this.a.number
this.b.setNumber(number * 1.1)
}
}

class A {
constructor() {
this.number = 0
}

setNumber(num, m) {
this.number = parseInt(num, 10)
if (m) {
m.setB()
}
}
}

class B {
constructor() {
this.number = 0
}

setNumber(num, m) {
this.number = parseInt(num, 10)
if (m) {
m.setA()
}
}
}

const a = new A()
const b = new B()
const m = new Mediator(a, b)

a.setNumber(100, m)
console.log(a.number, b.number)
b.setNumber(100, m)
console.log(a.number, b.number)

设计原则验证

  • 各个关联对象通过中介者隔离
  • 符合开放封闭原则