持续创作,加速成长!这是我参与「掘金日新计划 · 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 => {
// 带看房子
});
}
}
有了这个中介者模式之后,房东和租客都可以轻松的进行房子的出租和租赁了。
总结
有了中介者模式之后,我们可以通过封装一个对象来实现模块间的复杂交互逻辑,从而实现多个对象之间的解耦。同时,我们可以将多对多的复杂关系转换为一对多的简单关系,对于逻辑的处理进行分解。
好了,有关中介者模式的内容我们就聊到这里了,希望对大家有所帮助。
欢迎大家在下方进行留言交流。