介绍
※ 处理的关系过于复杂,需要一个中介者来维护关系
实现代码(ES6)
class A {
constructor(){
this.number = 0
}
setNumber (num,m){
this.number = num
if(m){
m.setB()
}
}
}
class B {
constructor(){
this.number = 0
}
setNumber(num,m){
this.number = num
if(m){
m.setA()
}
}
}
//中介者
class Mediator {
constructor(a,b){
this.a = a
this.b = b
}
setB(){
let number = this.a.number
this.a.setNumber(number * 100)
}
setA(){
let number = this.b.number
this.a.setNumber(number / 100)
}
}
// 测试
let a = new A()
let b = new B()
let 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)
设计原则
● 将各关联对象通过中介者隔离
● 符合开放封闭原则