行为型设计模式之中介者模式

65 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第23天,点击查看活动详情

前言

这个模式相信大家很容易理解,完全就是字面意思。

什么是中介者模式

我们还是先来简单看一下中介者模式的概念吧。

中介者模式:通过中介者对象封装一系列对象之间的交互,使对象之间不再互相引用,降低他们之间的耦合。

通过概念的理解,我们可以简单的得出下面的几个结论。

  • 中介者对象是多个对象之间沟通的桥梁

  • 多个对象之间没有直接联系,通过中介者进行交互

中介者实战

说到这里,大家可能会想到这样一个熟悉的场景——找房子。

对于有租房需求的小伙伴来说,大家应该都接触过房产中介。对于租客来说,在有租房需求的时候,通常是直接找到中介来进行房子的寻找;对于房东来说,如果有房子要出租的话,直接通过授权给中介来进行房屋的租赁。

在整个租房的过程中,租客和房东之间是多对多的。租客不知道有哪些房东手里有空余的房子,有哪些房东的房子还在出租;房东也不知道有哪些租客有租房子的需求。

这个时候,房产中介就诞生了,他们承接了租客和房东之间的沟通平台,通过了解租客的需求,然后根据手里海量的房产资源进行筛选,然后带领租客进行房屋的带看。

下面我们就用伪代码进行模拟一下。

    const Mediator = function() {
        const landldors = [];
        const tenants = [];
        
        // 房东出租
        rent(address, info) {
            // 先判断是否已发布相关信息
            if (!this.landldors[address]) {
                this.landldors.push({
                    [address]: info;
                });
            }
        }
        
        // 租客租赁
        tenant(info) {
            const houseList = this.landldors.filter((info) => Object.values(info)[0] === info);
            
            if (houseList.length === 0) {
                // 没有符合条件的
                return;
            }
            
            houseList.forEach(house => {
                // 带看房子
            });
        }
    }

有了这个中介者模式之后,房东和租客都可以轻松的进行房子的出租和租赁了。

总结

有了中介者模式之后,我们可以通过封装一个对象来实现模块间的复杂交互逻辑,从而实现多个对象之间的解耦。同时,我们可以将多对多的复杂关系转换为一对多的简单关系,对于逻辑的处理进行分解。

好了,有关中介者模式的内容我们就聊到这里了,希望对大家有所帮助。

欢迎大家在下方进行留言交流。