JavaScript中的中介者模式

227 阅读1分钟

介绍

※ 处理的关系过于复杂,需要一个中介者来维护关系

实现代码(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)


设计原则

● 将各关联对象通过中介者隔离

● 符合开放封闭原则