杂谈:用中介者模式解释中介这个行业兴起的原因

1,734 阅读2分钟

中介者模式的作用就是解决对象与对象之间错综复杂的交互关系,增加一个中介者以后,所有相关的对象都通过中介者对象来通信,当一个对象发生改变后,只需要通知中介者对象即可。

1、一个卖主,多个买主

假设有卖家A有一套面积:100平米,价格:20000元/平米的房子急需出售,他目前知道有三个买主在找房,对应关系如图:

image.png

通过代码实现卖家找买家:

// 卖家类
var Seller = function (name, info) {
    this.name = name;
    this.info = info;
}
// 卖家找买家的函数
Seller.prototype.match = function (buyer) {
    // 定义买家要求
    const buyerDemand = buyer.demand;
    // 获取需求数字
    const reg = /\d+/
    // 1、买家的要求
    let buyerRequestArea = buyerDemand.area.match(reg);
    buyerRequestArea = parseInt(buyerRequestArea);
    let buyerRequestprice = buyerDemand.price.match(reg);
    buyerRequestprice = parseInt(buyerRequestprice);
    // 2、卖家的条件
    let sellerOwnArea = this.info.area.match(reg);
    sellerOwnArea = parseInt(sellerOwnArea);
    let sellerOwnprice = this.info.price.match(reg);
    sellerOwnprice = parseInt(sellerOwnprice);
    return sellerOwnArea >= buyerRequestArea && sellerOwnprice <= buyerRequestprice;
}
// 买家类
var Buyer = function (name, demand) {
    this.name = name;
    this.demand = demand;
}

// 定义卖家
var sellA = new Seller('卖家A', {
    area: '100平米', // 卖家尺寸
    price: '20000元/平米' // 卖家要价
});

var buyerX = new Buyer('买家X', {
    area: '110平米', // 买家要求尺寸
    price: '10000元/平米' // 买家最高愿意支付
})
var buyerY = new Buyer('买家Y', {
    area: '120平米', // 买家要求尺寸
    price: '30000元/平米' // 买家最高愿意支付
})
var buyerZ = new Buyer('买家Z', {
    area: '99平米', // 买家要求尺寸
    price: '30000元/平米' // 买家最高愿意支付
})
// 卖家开始找买主
console.log(sellA.match(buyerX)); // true:没找到
console.log(sellA.match(buyerY)); // true:没找到
console.log(sellA.match(buyerZ)); // true:找到了

当前例子中,先定义卖家类,并为卖家定义match方法去匹配买家,如果其售卖面积大于买家要求,且售卖价格低于买家最高愿意支付,我们认为该买主是意向客户。

当前例子中刚好找到第三个买家Z的时候,就找到了。但是实际情况可能是找了几十个也没找到合适的意向客户。

2、多个卖主,多个买主

假设又有卖主B卖主C也加入了卖方行列中,此时的对应关系如图:

image.png

如果,我们依然按照以上的方式为卖主B卖主C寻找买主,那么,此时的对应关系就已经开始复杂起来。如果有成千上万个卖主买主在进行交易的匹配,交易状况就更加复杂,一个卖主可能会和几十个买主沟通筛选,一个买主也可能和几十个卖主沟通筛选。

这个时候,就有必要通过中介者模式进行改造了,为了展示主要逻辑,以下去掉价格和平米单价的单位。

// 卖家类
var Seller = function (name, info) {
    this.name = name;
    this.info = info;
}

// 买家类
var Buyer = function (name, demand) {
    this.name = name;
    this.demand = demand;
}

// 引入中介者
var broker = (function () {
    var sellerList = [];
    var buyerList = [];
    var operations = {}
    operations.addSellers = function (seller) {
        sellerList.push(seller)
    }

    operations.addBuyers = function (buyer) {
        buyerList.push(buyer)
    }

    operations.findBuyer = function (seller) {
        const result = []
        // 遍历所有的买家
        buyerList.map(v => {
            console.log(v.demand, seller);
            if (seller.info.price <= v.demand.price && seller.info.area >= v.demand.area) {
                result.push(v);
            }
        })
        return result
    }

    operations.findSeller = function (buyer) {
        const result = []
        // 遍历所有的买家
        sellerList.map(v => {
            if (v.info.price <= buyer.demand.price && v.info.area >= buyer.demand.area) {
                result.push(v);
            }
        })
        return result;
    }

    return operations;
})()

// 定义卖家,并将其添加到中介者卖家列表中
var sellA = new Seller('卖家A', {
    area: 100, // 卖家尺寸
    price: 20000 // 卖家要价
});
var sellB = new Seller('卖家B', {
    area: 90, // 卖家尺寸
    price: 18000 // 卖家要价
});

var sellC = new Seller('卖家C', {
    area: 120, // 卖家尺寸
    price: 22000 // 卖家要价
});

broker.addSellers(sellA)
broker.addSellers(sellB)
broker.addSellers(sellC)

// 定义买家,并将其添加到中介者买家列表中
var buyerX = new Buyer('买家X', {
    area: 110, // 买家要求尺寸
    price: 10000 // 买家最高愿意支付
})
var buyerY = new Buyer('买家Y', {
    area: 80, // 买家要求尺寸
    price: 30000 // 买家最高愿意支付
})
var buyerZ = new Buyer('买家Z', {
    area: 100, // 买家要求尺寸
    price: 30000 // 买家最高愿意支付
})

broker.addBuyers(buyerX)
broker.addBuyers(buyerY)
broker.addBuyers(buyerZ)

例子中,我们除了定义卖家类和买家类,我们还引入了中介者,中介者拥有卖家信息列表,也拥有买家信息列表。当有卖家需要卖方时,可以将房屋信息和个人姓名留给中介者,中介者将其推入到卖家信息列表中。当有买家需要买房时,可以将购买需求留给中介者,中介者将其推入到买家需求列表中。

有一天,卖家A告诉中介者,他着急用钱,他的房子着急出手。于是中介者开始帮其寻找买主:

var buyers = broker.findBuyer(sellA)

有一天,买家Z告诉中介者,他现在手头有钱了,想全款买套房。于是中介者开始帮其寻找买主:

var sellers = broker.findSeller(buyerZ)

总结

我们发现,引入中介者以后,卖家和买家再也不用去为寻找买家或者卖家而烦恼,中介者拥有大量的卖主和买主信息,为其快速精准匹配。这大概也是中介这个职业兴起,并且长盛不衰的原因之一。