是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。
这个就很好理解了,就是房产中介什么的。
这里额外提一句 有没有觉得中介和代理很像。
但是:
代理是一对多的(一个请求者和多个接受者)
中介是多对多(多个请求者或多个接受者?我觉得中介模式中每个对象都是请求者的同时也都是接受者)。
class Mediary {
constructor() {
this.buyHouseList = []
this.sellHouseList = []
}
addBuyHouse(buyHouse) {
this.buyHouseList.push(buyHouse)
}
addSellHouse(sellHouse) {
this.sellHouseList.push(sellHouse)
}
getMatchingSellHouse(buyHouse) {
const price = buyHouse.getPrice()
console.log('获取匹配的卖方:', '卖房价格低于或等于' ,price)
return this.sellHouseList.filter(item => item.getPrice() <= price)
}
getMatchingBuyHouse(sellHouse) {
const price = sellHouse.getPrice()
console.log('获取匹配的买方:', '买房价格高于或等于', price)
return this.buyHouseList.filter(item => item.getPrice() >= price)
}
}
class BuyHouse {
constructor(price) {
this.price = price
}
getPrice() {
return this.price
}
matchingSellHouse(mediary) {
console.log('匹配到的卖房:', mediary.getMatchingSellHouse(this) )
}
}
class SellHouse {
constructor(price) {
this.price = price
}
getPrice() {
return this.price
}
matchingBuyHouse(mediary) {
console.log( '匹配到的买房:', mediary.getMatchingBuyHouse(this) )
}
}
const mediary = new Mediary()
const buyHouse1 = new BuyHouse(1000)
const buyHouse2 = new BuyHouse(2000)
const sellHouse1 = new SellHouse(1500)
const sellHouse2 = new SellHouse(2000)
mediary.addBuyHouse(buyHouse1)
mediary.addBuyHouse(buyHouse2)
mediary.addSellHouse(sellHouse1)
mediary.addSellHouse(sellHouse2)
buyHouse1.matchingSellHouse(mediary)
buyHouse2.matchingSellHouse(mediary)
sellHouse1.matchingBuyHouse(mediary)
sellHouse2.matchingBuyHouse(mediary)
返回结果:
获取匹配的卖方: 卖房价格低于或等于 1000
匹配到的卖房: []
获取匹配的卖方: 卖房价格低于或等于 2000
匹配到的卖房: [ SellHouse { price: 1500 }, SellHouse { price: 2000 } ]
获取匹配的买方: 买房价格高于或等于 1500
匹配到的买房: [ BuyHouse { price: 2000 } ]
获取匹配的买方: 买房价格高于或等于 2000
匹配到的买房: [ BuyHouse { price: 2000 } ]